Quick int pointer allocation question

bearophile bearophileHUGS at lycos.com
Fri Sep 14 10:03:37 PDT 2012


monarch_dodra:

>> int *p = [5].ptr;
>>
>> -Steve

But see this benchmark:


void main() {
     auto pointers = new int*[1_000_000];
     foreach (int i, ref p; pointers)
         p = [i].ptr;
     foreach (i; 0U .. 4_000_000_000U) {}
}


On my 32 bit system its RAM commit is about 23 MB. The pointers 
array takes about 4 MB. This means each "int" takes about 19 
bytes of heap RAM instead of 4. Each int allocates some data 
(capacity) to extend the array.

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list