Ma in generale c'è un modo per sapere il compilatore dove mette le variabili?Originariamente inviato da franzauker
Senza complicare il problema eccessivamente, questo dipende dal compilatore.
Può memorizzare tutto nello stack, oppure avere un "vero" stack (per le variabili delle funzioni), "tanti" stack (esempio per i fork), uno heap statico, tanti heap statici etc.
Diciamo che tra i modelli "scolastici" (=supersemplificati) e quelli "veri" (=compilatori "veri") ci possono essere grandi differenze, ma sono dettagli![]()
Io con mingw32 e il debugger di default di code::blocks l' unico mode era ricevere un segmentation fault.
Quando avevo il segmentation fault mi diceva spesso che era una variabile nello stack ad avere problemi (spesso era un puntatore nullo,o un puntatore fuori zona di allocazione).
Comunque a me non ha mai riportato un segmentation fault sull' heap,non ho mai visto la parola heap scritta tra gli errori del debugger.
Comunque un' altra domanda che avevo: ho fatto un piccolo conto,2^32 è all' incirca lo spazio di indirizzamento che serve a memorizzare puntatori di 32 bit,e sul mio widnows 7 a 64 bit i puntatori hanno sempre 4 byte cioè 32 bit di dimensione,eppure la mia macchina è a 64 bit.
Ma allora c'è un legame tra la quantità di ram che hai e la dimensione di puntatori?
Io ho 4 gb di ram,ma se sulla mia macchina i puntatori sono di 32 bit come fa un puntatore a tenere traccia di tutta la ram?
Ci vorrebbero puntatori lunghi 8 byte se non sbaglio i conti.

Rispondi quotando