Questo è gcc 4.4.6 su Linux.gcc consente di compilare il tempo e l'utilizzo della memoria cambiando come dimensione dell'array nei cambiamenti del codice sorgente
Ecco il comportamento
bizarre.c
double a[500000000];
main() {
}
Se compilo questo utilizzando:
gcc bizarre.c
Poi il compilatore utilizza 4G di memoria e richiede molto tempo.
Se si effettua la dimensione dell'array 50000000, la compilazione richiede molto meno memoria e tempo.
È come se il compilatore eseguisse il codice che sta compilando.
Mi rendo conto che creare uno schieramento gigantesco in questo modo potrebbe non essere la migliore pratica, ma qualche spiegazione?
Compilando come eseguibile a 32 o 64 bit? –
nessun flag di ottimizzazione? si verificherà un sovraccarico di stack più che probabile ... con l'ottimizzazione attivata, questa variabile verrà probabilmente eliminata se si utilizza l'ottimizzazione superiore a -0 –
@ 0A0D: questo array viene comunque inserito nella sezione '.bss', nessuna pila coinvolta ... – sarnold