这是在 Windows XP 上,应用程序正在 C++ (VS2010) 中开发。
我希望我的应用程序继续分配内存,直到达到其限制,没有任何问题。但如果它分配整个 2GB(32 位 Windows 上的最大限制),它会覆盖堆栈空间并最终崩溃。如何避免这种情况? (顺便说一句,我使用 malloc
和 new
进行内存分配)
在“私有(private)字节”、“虚拟字节”和“工作集”中,我认为我应该监视“虚拟字节”。但我对此并不完全确定。 (当达到 2GB 时,我们可以确定我们已经达到了限制,是“虚拟字节”还是“私有(private)字节”?)
如果我必须监控“虚拟字节”,我不确定
_PROCESS_MEMORY_COUNTERS_EX
的哪个字段反射(reflect)了虚拟字节为了保持应用程序安全流畅地运行,我应该保留多少内存? (只是堆栈大小=线程数x每个线程的堆栈大小还是有更多的东西)
最佳答案
程序管理器将为您的堆栈和其他数据保留空间。您可以调用 malloc 和 new 直到它们返回 0 (NULL)。我认为Working Set是你需要监控的变量。
关于c++ - 尝试分配最大可能的内存来处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246101/