Página 1 de 1

Stack y variables Locales.

Publicado: 01 May 2019, 12:20
por mentalthink
Quería haceros un par de preguntas a ver si me despejáis un poco el "temporal".

Hablo de C++, aunque supongo que en cualquier otro lenguaje sera más o menos igual excepto si las variables se meten en los registros (que no se cuando pasa), supongo que será ASM o depende de la CPU.

Si por ejemplo hago una variable local en una función:

int Suma(int A , int B){
int temp = a+ b;
return temp;}

Los parametros (A y B) y la variable temp, estarán siempre en la misma posición de memoria?¿, o sea estarán en el el Stack, pero si las volvierá a llamar en otra ejecución del programa estarían en el mismo sitio(Dirección del Stack).

Por otro lado de que depende y quien decide el tamaño del Stack (Es el S.O)?¿, es igual para todos los programas?¿ varia el tamaño dependiendo el programa, o es siempre una porción de tamaño fijo?¿. Físicamente dónde está, dentro de la CPU, en la RAM(no creo porque si no el acceso no sería más rápido que en el HEAP).

Gracias. :jumper: :popcorn:

Re: Stack y variables Locales.

Publicado: 01 May 2019, 12:38
por zup
No, la posición variará dentro del área del stack. La posición exacta va en función de SP (por ejemplo, SP+2), pero no tienes garantías de que el valor de SP siempre sea el mismo al llamar a la función.

El tamaño del stack lo define el programador, si no lo defines el compilador asigna uno por defecto (salvo en ensamblador, que lo tienes que definir explícitamente). Y el stack va en la RAM, por lo que (en casi todos los sistemas) va a ser el sistema operativo el que defina su posición.

Re: Stack y variables Locales.

Publicado: 01 May 2019, 12:57
por mentalthink
Gracias zup, súper intersante todo lo que me has respondido.
Gracias!!!