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

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

有帮助吗?

解决方案

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

其他提示

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

Linker -> System -> Heap Reserve Size

也可以在编译器命令行中使用以下命令进行设置 /HEAP:reserve

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top