1. Explain the memory layout of a C program with respect to the variables of various storage classes.
This memory layout is organized in following fashion :-
Text or Code Segment :-
Text segment contains machine code of the compiled program. Usually, the text segment is sharable so that only a single copy needs to be in memory for frequently executed programs, such as text editors, the C compiler, the shells, and so on. The text segment of an executable object file is often read-only segment that prevents a program from being accidentally modified.
Initialized Data Segment :-
Initialized data stores all global, static, constant, and external variables ( declared with extern keyword ) that are initialized beforehand. Data segment is not read-only, since the values of the variables can be altered at run time.
This segment can be further classified into initialized read-only area and initialized read-write area.
#include <stdio.h>
char c[]="xyz"; /* global variable stored in Initialized Data Segment in read-write area*/
const char s[]="Bartleby"; /* global variable stored in Initialized Data Segment in read-only area*/
int main()
{
static int i=12; /* static variable stored in Initialized Data Segment*/
return 0;
}
Step by step
Solved in 4 steps with 1 images