2008-09-18 194 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