biowep
01-03-2012, 18:23
Salve
Smanettando con Dev-C++ ho notato che salvando in memoria del testo tramite un puntatore a carattere non viene allocata ulteriore memoria per il processo.
Cerco di spiegare mostrando quello che ho fatto
CASO 1
main(){
char a[]="testo molto lungo: 1000KB circa";
getch();
}
memoria allocata: 1524KB
CASO 2
main(){
char *a="stesso testo molto lungo: 1000KB circa";
getch();
}
memoria allocata: 544KB
È come se il testo non venisse allocato, ma ho provato anche a stampare e sembra sia quello che avevo scritto.
Come può succedere una cosa del genere, cioè che il programma acceda a zone di memoria non assegnateli?
C'è da dire anche che nel secondo caso mi ha dato un errore del programma (Dev-C++) "Access violation at address #numero in module 'devcpp.exe'. Read of address #numero
ma dopo 1/2 tentativi lo compila lo stesso
Smanettando con Dev-C++ ho notato che salvando in memoria del testo tramite un puntatore a carattere non viene allocata ulteriore memoria per il processo.
Cerco di spiegare mostrando quello che ho fatto
CASO 1
main(){
char a[]="testo molto lungo: 1000KB circa";
getch();
}
memoria allocata: 1524KB
CASO 2
main(){
char *a="stesso testo molto lungo: 1000KB circa";
getch();
}
memoria allocata: 544KB
È come se il testo non venisse allocato, ma ho provato anche a stampare e sembra sia quello che avevo scritto.
Come può succedere una cosa del genere, cioè che il programma acceda a zone di memoria non assegnateli?
C'è da dire anche che nel secondo caso mi ha dato un errore del programma (Dev-C++) "Access violation at address #numero in module 'devcpp.exe'. Read of address #numero
ma dopo 1/2 tentativi lo compila lo stesso