Skip to main content

C Dynamic Memory Allocation

Pointers

C Dynamic Memory Allocation

malloccalloc, or realloc are the three functions used to manipulate memory. These commonly used functions are available through the stdlib library so you must include this library in order to use them.

C – Dynamic memory allocation functions

FunctionSyntax
malloc()malloc (number *sizeof(int));
calloc()calloc (number, sizeof(int));
realloc()realloc (pointer_name, number * sizeof(int));
free()free (pointer_name);

malloc function

  • malloc function is used to allocate space in memory during the execution of the program.
  • malloc function does not initialize the memory allocated during execution.  It carries garbage value.
  • malloc function returns null pointer if it couldn’t able to allocate requested amount of memory.

Example program for malloc() in C

Example:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char *mem_alloc;
/* memory allocated dynamically */
mem_alloc
= malloc( 15 * sizeof(char) );

if(mem_alloc== NULL )
{
printf
("Couldn't able to allocate requested memory\n");
}
else
{
strcpy
( mem_alloc,"w3schools.in");
}

printf
("Dynamically allocated memory content : %s\n", mem_alloc );
free
(mem_alloc);
}
Program Output:
Dynamically allocated memory content : w3schools.in

calloc function

  • calloc () function and malloc () function is similar. But calloc () allocates memory for zero-initializes. However, malloc () does not.

Example program for calloc() in C

Example:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char *mem_alloc;
/* memory allocated dynamically */
mem_alloc
= calloc( 15, sizeof(char) );

if( mem_alloc== NULL )
{
printf
("Couldn't able to allocate requested memory\n");
}
else
{
strcpy
( mem_alloc,"w3schools.in");
}

printf
("Dynamically allocated memory content : %s\n", mem_alloc );
free
(mem_alloc);
}
Program Output:
Dynamically allocated memory content : w3schools.in

realloc function

  • realloc function modifies the allocated memory size by malloc and calloc functions to new size.
  • If enough space doesn’t exist in memory of current block to extend, new block is allocated for the full size of reallocation, then copies the existing data to new block and then frees the old block.

free function

  • free function frees the allocated memory by malloc (), calloc (), realloc () functions.

Example program for realloc() and free()

Example:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
char *mem_alloc;
/* memory allocated dynamically */
mem_alloc
= malloc( 20 * sizeof(char) );

if( mem_alloc == NULL )
{
printf
("Couldn't able to allocate requested memory\n");
}
else
{
strcpy
( mem_alloc,"w3schools.in");
}

printf
("Dynamically allocated memory content : " \ "%s\n", mem_alloc );
mem_alloc
=realloc(mem_alloc,100*sizeof(char));

if( mem_alloc == NULL )
{
printf
("Couldn't able to allocate requested memory\n");
}
else
{
strcpy
( mem_alloc,"space is extended upto 100 characters");
}

printf
("Resized memory : %s\n", mem_alloc );
free
(mem_alloc);
}
Program Output:
Dynamically allocated memory content : w3schools.in
Resized memory : space is extended upto 100 characters


Comments

For Programs Click Here

Popular posts from this blog

Python Lists

Python Lists Dealing with data in a structured format is quiet generous, and this is possible if those data are set accordingly in a specific manner. So, Python provides these data structures named ‘lists’ and ‘tuples’ that are used to organize data in  single set. Python has 6 built-in sequences and among them the most famous are “lists and tuples”. The lists are containers that hold a number of other objects in a given order. It usually puts into practice the sequence protocol and allows programmers to add or remove objects from that sequence. Each element of the sequence is assigned a number i.e. he index and the first index is 0 (zero). This versatile data-type of Python is written in a sequence of list separated by commas between expressions. Creating Lists To build a list, just put a number of expressions in square brackets. The syntax is: Syntax: lst1 = [ ] # lst1 is the name of the list lst2 = [ expression1 , …. , expression_N ] Example: #!/usr/bin/python ls...

Java Method Overriding

Java Method Overriding Declaring a method in the subclass which already exists there in the parent class is known as method overriding. When a class is inheriting a method from a superclass of its own, then there is an option of overriding the method provided it is not declared as final. The advantage of using overriding is the ability to classify a behavior that’s specific to the child class and the child class can implement a parent class method based on its necessity. There are certain rules that a programmer should follow in order to implement overriding. These are: In Java, a method can only be written in the child class and not in same class. Argument list should be exactly the same as that of the overridden method of that class. Instance methods can also be overridden if they are inherited by the child class. A constructor cannot be overridden. Final – declared methods cannot be overridden. Any method that is static cannot be used to override. The return type must have to be the...

Syllabus

Syllabus  C Programming Tutorials C Tutorial C Introduction History of C Programming Language C Installation C Program Structure C Input and Output (I/O) C Format Specifiers Declaration & Assignments C Tokens C Identifiers C Keywords C Constants C Operators C Data Types C Variables C Preprocessors C Type Casting C Custom Header File Flow Control C Decision Making C if Statements C if-else Statements C Nested if-else Statements C else-if Statements C goto Statement C switch Statements C Loops C while loops C do while loops C for loops Functions C Functions C Function Arguments C Library Functions C Variable Scope Arrays & Strings C Arrays C Strings Pointers C Pointers C Dynamic Memory Allocation Structure & Union C Structures C Unions File I/O C File Handling C fopen C fclose C getc C putc C getw C putw C fprintf C fscanf C fgets C fputs C feof                                     ...