[Tech] Massima allocazione array

Tommaso Biancalani - Llewlyn tommaso.biancalani@gmail.com
Mer 2 Set 2009 14:39:49 CEST


Ciao a tutti,
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

int vet[3000000]; // ~ 3*10^6

è sufficiente a mandare in segmentation fault ogni cosa. Se lo alloco
chiamando una malloc riesco a superare questa limitazione (xchè?), ad
esempio:

int *b;
b = (int *)malloc(sizeof(int)*1000000000); // 10^9

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?
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?

oh grazie,

--
tb
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/flug-tech/attachments/20090902/1a797316/attachment.htm>


Maggiori informazioni sulla lista flug-tech