Variables can be stored in several places in memory, depending on their lifetime. Variables that are defined outside any function (whether of global or file static scope), and variables that are defined inside a function as static variables, exist for the lifetime of the program's execution. These variables are stored in the "data segment." The data segment is a fixed-size area in memory set aside for these variables. The data segment is subdivided into two parts, one for initialized variables and another for uninitialized variables.Variables that are defined inside a function as auto variables (that are not defined with the keyword static) come into existence when the program begins executing the block of code (delimited by curly braces {}) containing them, and they cease to exist when the program leaves that block of code.Variables that are the arguments to functions exist only during the call to that function. These variables are stored on the "stack". The stack is an area of memory that starts out small and grows automatically up to some predefined limit. In DOS and other systems without virtual memory, the limit is set either when the program is compiled or when it begins executing. In UNIX and other systems with virtual memory, the limit is set by the system, and it is usually so large that it can be ignored by the programmer.The third and final area doesn't actually store variables but can be used to store data pointed to by variables. Pointer variables that are assigned to the result of a call to the malloc() function contain the address of a dynamically allocated area of memory. This memory is in an area called the "heap." The heap is another area that starts out small and grows, but it grows only when the programmer explicitly calls malloc() or other memory allocation functions, such as calloc(). The heap can share a memory segment with either the data segment or the stack, or it can have its own segment. It all depends on the compiler options and operating system. The heap, like the stack, has a limit on how much it can grow, and the same rules apply as to how that limit is determined.
C
Topic: Variables
Where in memory are my variables stored?
Browse random answers:
How do I write a function that takes variable number of arguments?
What are the different properties of variable number of arguments?
Define the scope of static variables.
What are volatile variables?
What is the benefit of using an enum rather than a #define constant?
Constant volatile variable declaration is possible or not? if give any one example and reason?
What is an lvalue?
Can a variable be both constant and volatile ?
What are register variables? What are the advantages of using register variables?
Can we specify variable field width in a scanf() format string? If possible how?
Difference between pass by reference and pass by value?
Left shifting a number by 1 is always equivalent to multiplying it by 2 ?
Bitwise & and | are unary operators?
What is scope & storage allocation of register, static and local variables?
What is the difference between 'for' and 'while' loops?
Swap two variables without using third variable.
Are the variables argc and argv are always local to main?
What are the two forms of #include directive?
Write a program to swap two numbers using a temporary variable.
Where is the auto variables stored?
What is a constant variable?
What are the advantages of auto variables?
Is it acceptable to declare/define a variable in a C header?
Difference between : - 1)Global variable and Local variable , 2)Static variable and Global variable ?
Differentiate between an internal static and external static variable?
What does a static variable mean?
How can you determine the maximum value that a numeric variable can hold?
In order to properly use a variable?
Can a variable be both const and volatile?
What is static identifier?
Constant volatile variable declaration is possible or not? if give any one example and reason.?
What is the difference between declaring a variable and defining a variable?
Are the variables argc and argv are local to main()?
Can static variables be declared in a header file?
Where does global, static, local, register variables, free memory and C Program instructions get stored?
Are the variables argc and argv are always local to main?
Where are the auto variables stored? What is the use of register variables?
What is difference between static and global static variable?
How much memory does a static variable takes?
What is a pointer variable?
What is the type of the variable b in the following declaration? #define FLOATPTR float*FLOATPTR a,b;
What is storage class and what are storage variable ?
Declaration of variables in c?
Explanation of value of a variable in c programming language by examples and questions and answers
How to swap the content of two variables without a temporary variable
Where in memory are my variables stored?
Do variables need to be initialized?
Should variables be stored in local blocks?
What is a register variable?
What is scope & storage allocation of extern and global variables?
What is the difference between 'for' and 'while' loops?
Are the variables argc and argv are local to main?
How do I print the contents of environment variables?
Explain the variable assignment in the declaration