[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