es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué cambia la dirección de memoria cada vez que ejecuto la misma instrucción de impresión?

Estoy obteniendo una ubicación de memoria diferente en mi programa en C cada vez que ejecuto la misma instrucción exacta. ¿No debería esto no cambiar nunca? Y sí, todavía ocurre si cambio &p a &x. Me doy cuenta de que esos dos deberían ser diferentes, pero esto sucede cuando ejecuto repetidamente (NO COMPILAR) el programa para ver su dirección de memoria.

#include <stdio.h>
#include <string.h>

int main()
{
  int x = 30;
  int* p;
  p = &x;

  printf("%p \n", &p);
}

Prueba</string.h></stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es normal obtener una ubicación de memoria diferente cada vez que se ejecuta el programa. Esto se debe a que el sistema operativo asigna aleatoriamente ubicaciones de memoria a las variables en su programa cada vez que se ejecuta. Es importante tener en cuenta que si bien la ubicación puede ser diferente cada vez, la distancia relativa entre las variables en la memoria se mantendrá constante. Es por eso que la aritmética de punteros funciona en C, incluso si la ubicación de memoria cambia.

Comments are closed.