Sto cercando di capire i puntatori e mi sono imbattuto in questo pezzo di codice e ogni volta che lo compilo ed eseguo, l'indirizzo cambia. È un po 'di valore spazzatura o puntatori ottengono effettivamente la memoria assegnata in movimento?Gli indirizzi dei puntatori cambiano ogni volta che il programma viene eseguito in C?
mio prompt dei comandi:
[email protected]:~/Desktop/Learn_C$ ./Practice
nNUmber is equal to : 15
nNumber is equal to : 25
0xbf98fd64
[email protected]:~/Desktop/Learn_C$ make Practice
make: 'Practice' is up to date.
[email protected]:~/Desktop/Learn_C$ ./Practice
nNUmber is equal to : 15
nNumber is equal to : 25
0xbfcce2a4
[email protected]:~/Desktop/Learn_C$ ./Practice
nNUmber is equal to : 15
nNumber is equal to : 25
0xbfa25df4
[email protected]:~/Desktop/Learn_C$ ./Practice
nNUmber is equal to : 15
nNumber is equal to : 25
0xbfecf104
Il mio codice C è:
#include <stdio.h>
int main()
{
int nNumber;
int *pPointer;
nNumber = 15;
pPointer = &nNumber;
printf("nNUmber is equal to : %d\n", nNumber);
*pPointer = 25;
printf("nNumber is equal to : %d\n", nNumber);
printf("%p\n", pPointer);
return 0;
}
Grazie in anticipo.
È una funzionalità di sicurezza in generale: [Indirizzo randomizzazione della disposizione dello spazio] (https://en.wikipedia.org/wiki/Address_space_layout_randomization) –
Perché il downvote. Questa è una domanda legittima. – alk