2008-11-25 25 views
6

Estoy tratando de comprender el proceso de declaración y asignación de un tipo primitivo en la etapa posterior.¿La primitiva tiene asignada una dirección de memoria?

  1. int i;
  2. i = 3;

Para 1), en la pila de memoria, asigna un espacio para almacenar un valor de tipo int llamado i Para 2), se asigna el valor 3 a la espacio conservado arriba

¿Hay una dirección de memoria allí? Desde mi impresión, ¿la dirección de memoria siempre está asociada con los objetos en el montón?

Actualización:

En cuanto a las respuestas:

Así, para cada variable en la pila, todos ellos están asignadas a la dirección de memoria, así como los objetos en el montón. ¿Estoy en lo correcto?

Pero para Java, este no es el caso?

Respuesta

1

Suponiendo que estás hablando de C o C++ (no puedo decirlo), sí. Puede acceder a la dirección de la siguiente manera:

int i = 3; 

int *k = &i; // k now is a pointer to i 

*k = 4; // assigns the value k points to (i) to 4, i is now 4 
0

¿De qué otro modo se producen los desbordamientos de la memoria intermedia de la pila? :) alguien tiene que escribir en un puntero a la pila.

5

No siempre hay direcciones involucradas. El compilador puede poner variables en registros si encuentra que su dirección nunca es tomada por el programador. Entonces no necesitarías ningún acceso a la memoria principal. Por ejemplo, en el código anterior, lo que podría generar el compilador podría ser tan simple como

add $2, $0, 3 

para poner el valor 3 en el registro 2. Tan pronto como se crea un puntero y hacer que apunte a esa variable, entonces usted tiene una dirección, en realidad. Y luego la variable no puede estar más en un registro.

0

Realmente la pila es un área especial de la memoria virtual de proceso, por lo que todo en la pila tiene direcciones de memoria. Jefe de la pila bloqueada por el registro ESP (SP) (arquitectura x86). Las direcciones de pila suelen ser más bajas que las direcciones de memoria, ya que la pila está más cerca del inicio de la memoria de proceso y luego del montón.

Cuestiones relacionadas