Academic Tutorials



English | French | Portugese | German | Italian
Google

Home Source Codes E-Books Downloads Contact Us About Us

C Tutorial
Introduction to C Programming
Variables in C
Opertaors in C
Branching Statement in C
Looping Statement in C
C Storage Class
Functions in C
The C Preprocessor
Input/Output Functions in C
File I/O Functions in C
Pointers in C
Arrays in C
Dynamic Memory Allocation in C
Strings in C
Structures in C

HTML Tutorials
HTML Tutorial
XHTML Tutorial
CSS Tutorial
TCP/IP Tutorial
XML Tutorials
XML Tutorial
XSL Tutorial
XSLT Tutorial
DTD Tutorial
Schema Tutorial
XForms Tutorial
XSL-FO Tutorial
XML DOM Tutorial
XLink Tutorial
XQuery Tutorial
XPath Tutorial
XPointer Tutorial
RDF Tutorial
SOAP Tutorial
WSDL Tutorial
RSS Tutorial
WAP Tutorial
Web Services Tutorial
Browser Scripting
JavaScript Tutorial
VBScript Tutorial
AJAX Tutorial
DHTML Tutorial
HTML DOM Tutorial
WMLScript Tutorial
E4X Tutorial
Server Scripting
ASP Tutorial
PHP Tutorial
PERL Tutorial
SQL Tutorial
ADO Tutorial
.NET (dotnet)
Microsoft.Net
XML Web Services
ASP.Net
.Net Mobile
C# : C Sharp
ADO.NET
VB.NET
Multimedia
SVG Tutorial
Flash Tutorial
Media Tutorial
SMIL Tutorial
Web Building
Web Browsers
Web Hosting
W3C Tutorial
Web Building
Web Quality
Web Semantic
Web Careers
Java Tutorials
Java Tutorial
JSP Tutorial
Servlets Tutorial
Struts Tutorial
EJB Tutorial
JMS Tutorial
JMX Tutorial
Programming Langauges
C Tutorial
C++ Tutorial
Visual Basic Tutorial
Data Structures Using C
Soft Skills
Communication Skills
Time Management
Project Management
Team Work
Leadership Skills
Corporate Communication
Negotiation Skills


Dynamic Memory Allocation in C
Previous Next


What is Dynamic Memory Allocation?

  • Dynamic Memory Allocation is defined as the dynamically allocation of space for variables at runtime.


  • It is wasteful when dealing with array type structures to allocate so much space when it is declared



  • Five ANSI Standartd Function Used in Dynamic Memory Allocation

    ANSI C provides five standard functions that will help you allocate memory on the heap which are as follows:

    1. sizeof()
    2. malloc()
    3. calloc()
    4. realloc()
    5. free()




    The following table describe the five different standard functions that helps you allocate memory dynamically
    Function Task
    sizeof The sizeof() function returns the memory size of the requested variable
    malloc Allocates memory requests size of bytes and returns a pointer to the Ist byte of allocated space
    calloc Allocates space for an array of elements initializes them to zero and returns a pointer to the memory
    free Frees previously allocated space
    realloc Modifies the size of previously allocated space.



    sizeof()

    The sizeof() function returns the memory size of requested variable. This call should be used in the conjunction with the calloc() function call, so that only the necessary memory is allocated, rather than a fixed size. Consider the following,

    struct date {
    int hour, minute, second;
    };

    int x;

    x = sizeof( struct date );



    malloc()

    A block mf memory may be allocated using the function called malloc. The malloc function reserves a block of memory of specified size and return a pointer of type void. This means that we can assign it to any type of the pointer. It takes the following form:

    ptr=(cast-type*)malloc(byte-size);

    ptr is a pointer of type cast-type the malloc returns a pointer (of cast type) to an area of memory with the size byte-size. The following is the example of using malloc function

    x=(int*)malloc(100*sizeof(int));



    calloc()

    Calloc is another memory allocation function that is normally used to request the multiple blocks of storage each of same size and then sets all bytes to zero. The general form of calloc is:

    ptr=(cast-type*) calloc(n,elem-size);

    The above statement allocates contiguous space for n blocks each size of the elements size bytes. All bytes are initialized to zero and a pointer to the first byte of allocated region is returned. If there is not enough space a null pointer is also returned.




    realloc()

    The memory allocated by using calloc or malloc might be insufficient or excess sometimes in both the situations we can change the memory size already allocated with the help of the function called realloc. This process is called the reallocation of memory. The general statement of reallocation of memory is :

    ptr=realloc(ptr,newsize);



    free()

    Compile time storage of a variable is allocated and released by the system in accordance with its storage class. With the dynamic runtime allocation, it is our responsibility to release the space when it is not required at all.When the storage is limited,the release of storage space becomes important . When we no longer need the data we stored in a block of memory and we do not intend to use that block for the storing any other information, Using the free function,we may release that block of memory for future use.

    free(ptr);

    ptr is a pointer that has been created by using calloc or malloc.




    The following program illustrate the reallocation of memory using realloc() and malloc()
    /*Example program for reallocation*/

    #include< stdio.h >
    #include< stdlib.h >
    define NULL 0
    main()
    {
    char *buffer;
    /*Allocating memory*/
    if((buffer=(char *) malloc(10))==NULL)
    {
    printf("Malloc failed\n");
    exit(1);
    }
    printf("Buffer of size %d created \n",_msize(buffer));
    strcpy(buffer,Bangalore);
    printf(\nBuffer contains:%s\n,buffer);
    /*Reallocation*/
    if((buffer=(char *)realloc(buffer,15))==NULL)
    {
    printf("Reallocation failed\n");
    exit(1);
    }
    printf("\nBuffer size modified".\n);
    printf("\nBuffer still contains: %s\n",buffer);
    strcpy(buffer,Mysore);
    printf("\nBuffer now contains:%s\n",buffer);
    /*freeing memory*/
    free(buffer);
    }



    Share And Enjoy:These icons link to social bookmarking sites where readers can share and discover new web pages.
    • blinkbits
    • BlinkList
    • blogmarks
    • co.mments
    • connotea
    • del.icio.us
    • De.lirio.us
    • digg
    • Fark
    • feedmelinks
    • Furl
    • LinkaGoGo
    • Ma.gnolia
    • NewsVine
    • Netvouz
    • RawSugar
    • Reddit
    • scuttle
    • Shadows
    • Simpy
    • Smarking
    • Spurl
    • TailRank
    • Wists
    • YahooMyWeb

    Previous Next

    Keywords: Dynamic Memory Allocation in C, dynamic memory allocation in c++, c arrays, c tutorial, c array, void c, c syntax, unix memory, value allocation, c language, return c, memory type, dynamic example, dynamic algorithm, dynamic tutorial, c example, c algorithm, variable c, c type, c program, memory size, unix c


    HTML Quizes
    HTML Quiz
    XHTML Quiz
    CSS Quiz
    TCP/IP Quiz
    XML Quizes
    XML Quiz
    XSL Quiz
    XSLT Quiz
    DTD Quiz
    Schema Quiz
    XForms Quiz
    XSL-FO Quiz
    XML DOM Quiz
    XLink Quiz
    XQuery Quiz
    XPath Quiz
    XPointer Quiz
    RDF Quiz
    SOAP Quiz
    WSDL Quiz
    RSS Quiz
    WAP Quiz
    Web Services Quiz
    Browser Scripting Quizes
    JavaScript Quiz
    VBScript Quiz
    AJAX Quiz
    DHTML Quiz
    HTML DOM Quiz
    WMLScript Quiz
    E4X Quiz
    Server Scripting Quizes
    ASP Quiz
    PHP Quiz
    PERL Quiz
    SQL Quiz
    ADO Quiz
    .NET (dotnet) Quizes
    Microsoft.Net Quiz
    XML Web Services Quiz
    ASP.Net Quiz
    .Net Mobile Quiz
    C# : C Sharp Quiz
    ADO.NET Quiz
    VB.NET Quiz
    Multimedia Quizes
    SVG Quiz
    Flash Quiz
    Media Quiz
    SMIL Quiz
    Web Building  Quizes
    Web Browsers Quiz
    Web Hosting Quiz
    W3C Quiz
    Web Building Quiz
    Web Quality Quiz
    Web Semantic Quiz
    Web Careers Quiz
    Java Quizes
    Java Quiz
    JSP Quiz
    Servlets Quiz
    Struts Quiz
    EJB Quiz
    JMS Quiz
    JMX Quiz
    Programming Langauges Quizes
    C Quiz
    C++ Quiz
    Visual Basic Quiz
    Data Structures Using C Quiz
    Soft Skills Quizes
    Communication Skills Quiz
    Time Management Quiz
    Project Management Quiz
    Team Work Quiz
    Leadership Skills Quiz
    Corporate Communication Quiz
    Negotiation Skills Quiz

    Privacy Policy
    Copyright © 2003-2008 Vyom Technosoft Pvt. Ltd., All Rights Reserved.