VS2005:限制堆大小

时间:2008-09-18 23:47:21

标签: visual-c++ memory heap

VS2005 C ++编译器标志是否像Xmx ??? M java标志一样,因此我可以限制在Windows上运行的应用程序的堆大小。

我需要限制堆大小,以便我可以填充内存以找出当前的空闲内存。 (该代码也在嵌入式系统上运行,这是获得内存使用的最佳方法)

3 个答案:

答案 0 :(得分:1)

您可以通过设置大小来设置程序的堆大小:

Linker -> System -> Heap Reserve Size

也可以使用/HEAP:reserve

在编译器命令行中设置它

答案 1 :(得分:0)

您可能想要查看gflags实用程序(在Windows调试工具中)是否可以执行此操作。它可以用本机应用程序堆做很多其他有趣的事情。

答案 2 :(得分:0)

堆大小取决于使用的分配器。很可能还有一些Windows API调用限制了进程可以分配的内存量,但是我不知道一个,我现在不想找它,抱歉。但一般来说,如果你编写自己的分配器(可能只是环绕编译器提供的malloc()new运算符),你可以人为地限制堆大小。

或者,如果你有自己的分配器,即使只是一个包装器,你也可以跟踪总共分配了多少内存。如果您知道可用的金额,您可以做一些减法并完成总计。您可能还可以获得碎片统计信息,例如最大的空闲块。

相关问题