/ / VS2005: Obmedzte veľkosť haldy - visual-c ++, pamäť, haldu

VS2005: Obmedzte veľkosť haldy - visual-c ++, pamäť, halda

Je príznak kompilátora VS2005 C ++, ako je príznak Xava x java, takže môžem obmedziť veľkosť haldy mojej aplikácie bežiacej na Windows.

Musím obmedziť veľkosť haldy, aby som mohol naplniť pamäť a zistiť aktuálnu voľnú pamäť. (Kód beží aj na zabudovanom systéme, kde je to najlepšia metóda na využitie pamäte)

odpovede:

0 pre odpoveď č. 1

Možno budete chcieť preskúmať, či to dokáže obslužný program gflags (v nástrojoch na ladenie systému Windows). S hromadou natívnych aplikácií môže robiť veľa ďalších zaujímavých vecí.


1 pre odpoveď č. 2

Veľkosť haldy pre svoj program môžete nastaviť nastavením veľkosti v:

Linker -> System -> Heap Reserve Size

Môže byť tiež nastavený na príkazovom riadku kompilátora pomocou /HEAP:reserve


0 pre odpoveď č. 3

Veľkosť haldy závisí od použitého alokátora. Môže sa tiež vyskytnúť nejaká výzva rozhrania Windows API, ktorá obmedzuje množstvo pamäte, ktorú môže proces prideliť, ale nie som si toho vedomá a vôbec sa necítim hľadať, prepáčte. Vo všeobecnosti však platí, že ak napíšete vlastného alokátora (možno iba zabalíte okolo poskytovaného kompilátora) malloc() alebo new operátor) môžete týmto spôsobom umelo obmedziť veľkosť haldy.

Prípadne, ak máte svojho vlastného alokátora,aj keď iba obálka, môžete sledovať, koľko pamäte bolo alokované celkom. Ak viete množstvo, ktoré je k dispozícii, stačí urobiť nejaké odpočítanie a urobiť tak, že získate celkovú sumu. Potom by ste mohli získať štatistiku fragmentácie, napríklad najväčší voľný blok.