c++ - 尝试分配最大可能的内存来处理

标签 c++ c memory memory-management

这是在 Windows XP 上,应用程序正在 C++ (VS2010) 中开发。

我希望我的应用程序继续分配内存,直到达到其限制,没有任何问题。但如果它分配整个 2GB(32 位 Windows 上的最大限制),它会覆盖堆栈空间并最终崩溃。如何避免这种情况? (顺便说一句,我使用 mallocnew 进行内存分配)

  1. 在“私有(private)字节”、“虚拟字节”和“工作集”中,我认为我应该监视“虚拟字节”。但我对此并不完全确定。 (当达到 2GB 时,我们可以确定我们已经达到了限制,是“虚拟字节”还是“私有(private)字节”?)

  2. 如果我必须监控“虚拟字节”,我不确定 _PROCESS_MEMORY_COUNTERS_EX 的哪个字段反射(reflect)了虚拟字节

  3. 为了保持应用程序安全流畅地运行,我应该保留多少内存? (只是堆栈大小=线程数x每个线程的堆栈大小还是有更多的东西)

最佳答案

程序管理器将为您的堆栈和其他数据保留空间。您可以调用 malloc 和 new 直到它们返回 0 (NULL)。我认为Working Set是你需要监控的变量。

关于c++ - 尝试分配最大可能的内存来处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24246101/

相关文章:

c++ - 使用 Armadillo 插值

c++ - 在 C++ 中使用两个 getline(cin,s)

c - C中未命名范围的成本是多少?

c++ - 嵌入式系统状态模式: Storing information related to asynchronous events

c# - 托盘应用程序在 xp 中占用 40mb,在 win7 中占用 10mb

从服务器下载和保存大量图像时的 iOS 内存问题 (ARC)

c++ - QtCreator:部署单元测试

c++ - 如何使用 list::sort() 对 STL 列表对象进行排序,同时将我的自定义排序函数作为参数传递给 list::sort?

c - 没有 printf() 返回 char 数组失败

c++ - 为什么 C++ 分配器避免就地重新分配