题
VS2005 C++ 编译器标志是否类似于 Xmx???M java 标志,以便我可以限制在 Windows 上运行的应用程序的堆大小。
我需要限制堆大小,以便可以填充内存以找出当前的可用内存。(该代码也在嵌入式系统上运行,这是获取内存使用情况的最佳方法)
解决方案
您可能想查看 gflags 实用程序(在 Windows 调试工具中)是否可以执行此操作。它可以利用大量本机应用程序做许多其他有趣的事情。
其他提示
您可以通过在以下位置设置大小来设置程序的堆大小:
Linker -> System -> Heap Reserve Size
也可以在编译器命令行中使用以下命令进行设置 /HEAP:reserve
堆大小取决于所使用的分配器。可能还有一些 Windows API 调用限制了进程可以分配的内存量,但我不知道,而且我现在不想寻找它,抱歉。但一般来说,如果您编写自己的分配器(也许只是包装编译器提供的分配器) malloc()
或者 new
运算符)您可以通过这种方式人为地限制堆大小。
或者,如果您有自己的分配器,即使只是一个包装器,您也可以跟踪总共分配了多少内存。如果您知道可用金额,您只需做一些减法即可得到总数。然后您也许还可以获得碎片统计信息,例如最大的空闲块。
不隶属于 StackOverflow