1

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

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

4

3 回答 3

1

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

Linker -> System -> Heap Reserve Size

也可以在编译器命令行使用/HEAP:reserve

于 2009-03-13T09:03:23.060 回答
0

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

于 2008-09-19T00:06:31.290 回答
0

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

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

于 2008-09-19T00:08:56.167 回答