[Tech] Massima allocazione array
Simone Piccardi
piccardi@firenze.linux.it
Mer 2 Set 2009 18:28:19 CEST
Tommaso Biancalani - Llewlyn wrote:
> 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
>
Questi vanno nello stack.
piccardi@ellington:~$ ulimit -a | grep stack
stack size (kbytes, -s) 8192
per cui se allochi piu` di 2072576 interi vai in stack overflow di
brutto (e ti becchi il sigsegv). Su puo` alzare (man setrlimit).
> è 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
>
Questi vanno nello heap.
Qui il limite e` dato dallo spazio di indirizzi disponibile. A 32 bit
sono 4Gb del tutto teorici, in realta` hai meno spazio (se ricordo bene
da 0x08000000 a 0x0c000000).
Ciao
Simone
Maggiori informazioni sulla lista
flug-tech