Memory model:
In c there are six type of memory model.
If you want to see all memory model in Turbo C++ IDE then open Turbo C++ IDE and the go:
Options menu -> Compiler -> Code generation
These memory models are:
(a) TINY
(b) SMALL
(c) MEDIUM
(d) COMPACT
(e) LARGE
(f) HUGE
If you want to change the memory model then go to:
Options menu -> Compiler -> Code generation
And select any memory model and click OK button.
Properties of memory mode in C:
(1) Memory model decides the default type of pointer in C.
Note:
Code: A pointer to function is called code.
Data: A pointer to variable is called data.
Examples:
(1)What will be output of following c program?
void main(){
int *ptr;
printf("%d",sizeof ptr);
}
Output: Depends upon memory model.
Explanation: If memory model is TINY, SMALL or MEDIUM then default pointer will near and output will be 2 other wise output will be 4.
(2)What will be output of following c program?
void main(){
char (*fun)();
printf("%d",sizeof fun);
}
Output: Depends upon memory model.
Explanation: fun is pointer to function. If memory model is TINY, SMALL or COMPACT then default pointer will near and output will be 2 other wise output will be 4.
(3)What will be output of following c program?
void main(){
int near *p,*q;
printf("%d , %d",sizeof(p),sizeof(q));
}
Output: 2, Depend upon memory model.
Explanation: p is near pointer while type of pointer q will depend what is default type of pointer.
(4)What will be output of following c program?
void main(){
char huge **p;
printf("%d , %d",sizeof(p),sizeof(*p));
}
Output: 4, Depend upon memory model.
Explanation: p is huge pointer while type of pointer *p will depend what is default type of pointer.
(5)Write a c program to find the memory model of you computer?
void main(){
#if defined __TINY__
printf("Memory model is: TINY");
#elif defined __SMALL__
printf("Memory model is:SMALL ");
#elif defined __MEDIUM__
printf("Memory model is:MEDIUM ");
#elif defined __COMPACT__
printf("Memory model is:COMPACT ");
#elif defined __LARGE__
printf("Memory model is:LARGE ");
#elif defined __HUGE__
printf("Memory model is:HUGE ");
#endif
}
(2) Memory models decide the default size of segment.
0 comments:
Post a Comment