Ciao a tutti,<br>su una ubuntu col gcc 4.3.3 sto cercando di scrivere un programmino che tra le tante belle cose deve allocare un bel pò di memoria per farci qualche conto, il problema è sui limiti di allocazione. Allocare staticamente un<br>
<br>int vet[3000000]; // ~ 3*10^6<br><br>è sufficiente a mandare in segmentation fault ogni cosa. Se lo alloco chiamando una malloc riesco a superare questa limitazione (xchè?), ad esempio:<br><br>int *b;<br>b = (int *)malloc(sizeof(int)*1000000000); // 10^9<br>
<br>passa liscio come l'oro. Se vado un ordine di grandezza sopra però la malloc ritorna NULL e io ritorno triste. Da dove origina questa limite? È linux che riserva un tot massimo di memoria ad un'applicazione? Come lo inculo?<br>
A me garbava l'allocazione statica xchè permette una notazione comoda passando a vettori multidimensionali (vet[i][j][k]), allocando matrici di matrici con malloc suppongo debba inventarmi qualche macro e indicizzarmi a mano l'offset. Solitamente qual'è la strategia ottimale?<br>
<br>oh grazie,<br><br>--<br>tb<br><br><br><br><br>