2008-09-18 171 views
1

是像XMX ???中號的Java標誌的一個VS2005 C++編譯器標誌,所以我可以限制在Windows上運行我的應用程序的堆大小。VS2005:限制堆大小

我需要限制堆的大小,所以我可以填補的內存來找出當前的可用內存。 (該代碼也運行在嵌入式系統上這哪裏是讓內存使用的最佳方法)

+0

嗯編譯器命令行設置 - 很難回答。你在用什麼語言? C,C++? – 2008-09-18 23:50:16

+0

對不起,我說的gcc,但實際上我用C++在VS2005 – fabiopedrosa 2008-09-18 23:50:45

回答

0

你可能要考慮的GFLAGS實用程序(在Windows調試工具)是否可以做到這一點。它可以用本地應用程序堆做很多其他有趣的事情。

0

堆大小取決於所使用的分配器。可能還有一些Windows API調用會限制進程可以分配的內存量,但是我不知道其中的一個,我不想立即尋找它,對不起。但總的來說,如果你編寫自己的分配器(也許只是環繞編譯器提供的malloc()new運算符),那麼可以人爲地限制堆大小。

另外,如果你有你自己的分配器,哪怕只是一個包裝,你可以跟蹤的多少內存總數已經分配。如果你知道可用的數量,你可以做一些減法,並完成總量。您可能也可以獲得碎片統計數據,就像最大的空閒區塊一樣。

1

您可以通過設置大小爲您的程序堆大小:

Linker -> System -> Heap Reserve Size

它也可以在使用/HEAP:reserve