In Windows, per applicazioni molto esigenti, un programmatore può utilizzare HeapCreate, HeapAlloc per gestire e controllare meglio l'allocazione della memoria, accelerandola (ovvero allocatori privati). Qual è l'equivalente nella programmazione in C++ di Linux?HeapCreate, HeapAlloc in Linux, allocatore privato per Linux
risposta
Se si desidera utilizzare il proprio allocatore privato, utilizzare mmap()
per mappare una quantità di memoria nel processo, quindi è possibile utilizzare quella memoria come desiderato. Aprire un descrittore di file su /dev/zero
e quindi utilizzarlo come parametro "fildes" su mmap()
. Vedi man mmap
per i dettagli completi dei parametri da passare. A questo proposito, mmap()
ha lo stesso ruolo di HeapCreate()
.
Non è necessario aprire '/ dev/zero' - puoi semplicemente usare il flag' MAP_ANONYMOUS' e passare -1 come argomento 'fd'. – caf
Vero, ed è spesso più veloce se lo fai, anche se 'MAP_ANONYMOUS' è meno portabile (ad esempio non è incluso in SUSv2). Ma hai ragione, lo farebbe quasi sicuramente in questa situazione :-) – psmears
SUSv2? Chi dà un sottaceto :) –
È possibile fornire un confronto del codice sorgente di Windows utilizzando HeapCreate(). HeapAlloc(). HeapFree(). e codice sorgente usando mmap(). funziona per fare la stessa cosa? – PatrickM