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