C | Asignación dinámica de memoria | Pregunta 8

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *