VS2005: Begrenzen Sie die Heap-Größe
-
01-07-2019 - |
Frage
Ist das ein VS2005 C ++ Compiler-Flag wie die Xmx ??? M Java-Flag, so kann ich die Heap-Größe meiner Anwendung unter Windows begrenzen.
Ich brauche die Heap-Größe zu begrenzen, so dass ich den Speicher füllen kann die aktuellen freien Speicher, um herauszufinden. (Der Code läuft auch auf einem Embedded-System, in dem das ist die beste Methode, um die Speichernutzung zu erhalten)
Lösung
Sie können schauen wollen, ob der gflags-Dienstprogramm (in den Windows-Debugging Tool) dies tun kann. Es kann mit dem Haufen von nativen Anwendungen viele andere interessante Dinge tun.
Andere Tipps
Sie können die Speichergröße für das Programm festgelegt, indem die Größe bei der Einrichtung:
Linker -> System -> Heap Reserve Size
Es kann auch bei der Compiler-Befehlszeile mit /HEAP:reserve
eingestellt wird
Die Speichergröße hängt von dem allocator verwendet. Es könnte auch einiger Windows-API-Aufruf sein, dass die Größe des Speichers begrenzt ein Prozess zuordnen kann, aber ich bin mir nicht bewusst ein und ich fühle mich nicht wie jetzt, es zu suchen, sorry. Aber im Allgemeinen, wenn Sie Ihre eigene allocator schreiben (vielleicht auch nur umschlingen den Compiler bereitgestellten malloc()
oder new
Operator) Sie künstlich die Heap-Größe auf diese Weise begrenzen kann.
Alternativ, wenn Sie Ihre eigene allocator haben, auch nur, wenn ein Wrapper, Sie verfolgen, wie viel Speicher halten kann, hat insgesamt zugeordnet. Wenn Sie den zur Verfügung stehenden Betrag kennen, können Sie nur einige Subtraktion tun und mit dem Erhalten des Gesamt erfolgen. Vielleicht haben Sie auch dann Fragmentierungsstatistik erhalten werden können, wie größte freie Block.