Static memory allocation: The compiler allocates the required memory space for a declared variable.By using the address of operator,the reserved address is obtained and this address may be assigned to a pointer variable.Since most of the declared variable have static memory,this way of assigning pointer value to a pointer variable is known as static memory allocation. memory is assigned during compilation time.
Dynamic memory allocation: It uses functions such as malloc( ) or calloc( ) to get memory dynamically.If these functions are used to get memory dynamically and the values returned by these functions are assingned to pointer variables, such assignments are known as dynamic memory allocation.memory is assined during run time.
Static memory allocation will be stored in Stack or in Data Segment.
say,
int i; char ch;
int array[5]; float f;
struct xyz obj1; etc...
Global variables are stored in Data Segment which is also static memory allocation.
int index; double salary;
int main() { ;;; // Some thing }
Where as the dynamic memory allocation is done in heap using malloc(),calloc() or even realloc().