C Programming language

Dynamic Memory Allocation in C: Introduction and Example
Previous Home Next

Introduce to dynamic memory allocation

In some programming contexts, you want to process data but don't know what size of it is. For example, you read a list of students from file but don't know how many students record there. specify the enough maximum size for the the array but it is not efficient in memory management. C provides you a powerful and flexible way to manage memory allocation at runtime. It is called dynamic memory allocation. Dynamic means you can specify the size of data at runtime. C programming language provides a set of standard functions prototype to allow you to handle memory effectively. With dynamic memory allocation you can allocate and free memory as needed. Getting to know the size of data before allocating memory, we need to know the way to identify the size of each data so we can allocate memory correctly. We can get the size of data by using sizeof() function. sizeof() function returns a size_t an unsigned constant integer.

For example

sizeof(int); 

It returns 4 bytes in typical 32 bit machines.

#include <stdio.h>  
typedef struct __address{ 
int house_number; 
char street[50]; 
int zip_code; 
char country[20]; 
} address; 
void main() 
{  
printf("size of int is %d byte(s)\n",sizeof(int)); 
printf("size of unsigned int is %d byte(s)\n",sizeof(unsigned int)); 
printf("size of short is %d byte(s)\n",sizeof(short)); 
printf("size of unsigned short is %d byte(s)\n",sizeof(unsigned short)); 
printf("size of long is %d byte(s)\n",sizeof(long)); 
printf("size of char is %d byte(s)\n",sizeof(char)); 
printf("size of float is %d byte(s)\n",sizeof(float)); 
printf("size of double is %d byte(s)\n",sizeof(double)); 
printf("size of address is %d byte(s)\n",sizeof(address)); 
}

[an error occurred while processing this directive]

 

Output:
size of int is 4 byte(s)
size of unsigned int is 4 byte(s)
size of short is 2 byte(s)
size of unsigned short is 2 byte(s)
size of long is 4 byte(s)
size of char is 1 byte(s)
size of float is 4 byte(s)
size of double is 8 byte(s)
size of address is 80 byte(s)
Previous Home Next