Allocazioni di grandi dimensioni di memoria

di il
6 risposte

Allocazioni di grandi dimensioni di memoria

Buongiorno a tutti, sto facendo degli esperimenti con l'allocazione di grandi blocchi di memoria ma non mi tornano i conti. Vengo subito al codice...

Una struttura dati costituisce l'elemento base dell'allocazione:
typedef struct tag_Voxel {
	size_t u, v, w;
	_Bool b;
	void* r;
} _Voxel;
Il suo allocatore:
_Voxel * AllocateFirstLevel(size_t n)
{
	return (_Voxel*)malloc( sizeof(_Voxel) * n );
}
La chiamata:
size_t n = 360000000ull;
_Voxel *vl = AllocateFirstLevel(n);

I miei conti sarebbero questi:

Numero di elementi: 360 000 000 ( come assegnato alla chiamata)
Dimensione del singolo elemento: 40 bytes ( sizeof(_Voxel) )
Dimensione della allocazione: 14 400 000 000 bytes ( sizeof(_Voxel) * n )

Se un MB fosse 1.0E+006 byte, otterrei 14400 MB, se invece fosse 1024×1024 allora sarebbero 13733 MB. Mi sembrano comunque tanti.

Nella Gestione attività di Windows 8 il mio Tester.exe cresce solo di 26.9 MB dopo la l'allocazione.

Dove sbaglio i miei conteggi?

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte