Domanda

Il flag del compilatore C++ VS2005 è come il flag java Xmx???M in modo da poter limitare la dimensione heap della mia applicazione in esecuzione su Windows.

Devo limitare la dimensione dell'heap in modo da poter riempire la memoria per scoprire la memoria libera corrente.(Il codice viene eseguito anche su un sistema embedded dove questo è il metodo migliore per ottenere l'utilizzo della memoria)

È stato utile?

Soluzione

Potresti voler verificare se l'utilità gflags (negli strumenti di debug di Windows) può farlo.Può fare molte altre cose interessanti con il mucchio di applicazioni native.

Altri suggerimenti

Puoi impostare la dimensione dell'heap per il tuo programma impostando la dimensione in:

Linker -> System -> Heap Reserve Size

Può anche essere impostato sulla riga di comando del compilatore utilizzando /HEAP:reserve

La dimensione dell'heap dipende dall'allocatore utilizzato.Potrebbero esserci anche alcune chiamate API di Windows che limitano la quantità di memoria che un processo può allocare, ma non ne sono a conoscenza e non ho voglia di cercarla in questo momento, mi spiace.Ma in generale, se scrivi il tuo allocatore (magari semplicemente avvolgi il file fornito dal compilatore malloc() O new operatore) è possibile limitare artificialmente la dimensione dell'heap in questo modo.

In alternativa, se si dispone di un proprio allocatore, anche solo un wrapper, è possibile tenere traccia della quantità di memoria allocata in totale.Se conosci l'importo disponibile, puoi semplicemente fare qualche sottrazione e ottenere il totale.Potresti anche essere in grado di ottenere statistiche sulla frammentazione, come il blocco libero più grande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top