Il giorno 01 gennaio 2013 21:08, Federico Di Gregorio
<fog@dndg.it> ha scritto:
On 31/12/2012 12:14, emmanuel segura wrote:
> Capisco il tuo consiglio e ti rigranzio, ma comunque non mi spiego
> perche su debian a 64 non funziona invece su una debian a 32bit e su
> centos 32 bit si
Perché la memoria viene assegnata ad un programma in multipli di una
pagina (credo 4K). Quindi quando dichiari un array di 1 elemento ed
altre variabili il compilatore gli dedica *minimo* 4K. Se scrivi li
dentro non succede un segfault (anche se il programma è bacato) perchè
la CPU si accorge degli accessi all'esterno della memoria del processo
solo quando vai fuori dalla pagina. "pa" ha una dimensione (a occhio) di
8 byte (su di una architettura a 32 bit) quindi ne puoi scrivere un po'
prima di finire fuori dalla pagina. Anzi, su di un 32 bit ne puoi
scrivere più di 256 e il programma funziona mentre su di un 64 bit...
*sbang* (la struttura su di un 64 bit occupa più memoria, direi 16 byte
così ad occhio).
federico
--
Federico Di Gregorio federico.digregorio@dndg.it
Studio Associato Di Nunzio e Di Gregorio http://dndg.it
Gli esseri umani, a volte, sono destinati, per il solo fatto di
esistere, a fare del male a qualcuno. -- Haruki Murakami