Considere el siguiente programa, ¿dónde se almacenan i, j y k en la memoria?
int i; int main() { int j; int *k = (int *) malloc (sizeof(int)); }
(A) i, j y *k se almacenan en el segmento de la pila
(B) i y j se almacenan en el segmento de la pila. *k se almacena en el montón.
(C) i se almacena en la parte BSS del segmento de datos, j se almacena en el segmento de pila. *k se almacena en el montón.
(D) j se almacena en la parte BSS del segmento de datos, i se almacena en el segmento de pila. *k se almacena en el montón.
Respuesta: (C)
Explicación: i es una variable global y no está inicializada, por lo que se almacena en la parte BSS del segmento de datos (http://en.wikipedia.org/wiki/.bss)
j es local en main() por lo que se almacena en el marco de la pila (http://en.wikipedia.org/wiki/Call_stack)
*k se asigna dinámicamente, por lo que se almacena en Heap Segment.
Consulte el siguiente artículo para obtener más detalles.
Diseño de memoria de programas en C
Prueba de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA