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...

C++ Qualifiers and Storage Classes

C++ Qualifiers and Storage Classes Qualifiers and storage class are smaller but important programming concept that helps to make the quality of a variable more accurate for using that variable within the program. In this chapter you will learn about how qualifiers are used with variables and what the roles of different storage classes in C++ are. What is a Qualifier? A qualifier is a token added to a variable which adds an extra  quality , such as specifying volatility or constant-ness to a variable. They act like an adjective for a variable. With or without a qualifier, the variable itself still occupies the same amount of memory, and each bit has the same interpretation or contribution to the state/value. Qualifiers just specify something about how it may be accessed or where it is stored. Three qualifiers are there in C++. These are: const : This is used to define that the type is constant. volatile : his is used to define that the type is volatile. mutable:  applies to non...

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                                     ...