在我的 Visual C++ 应用程序中,我知道要分配的总对象 (CMyObject) 为 16728064,每个对象为 64 字节,因此要分配的总内存为 1GB。内存将在开始时分配,在应用程序的整个生命周期中使用,并在最后释放。
在这种情况下,分配内存的最佳方式是什么?
目前我尝试在最开始分配内存,如下:
CMyObject *p = new CMyObject[16728064];
// Perform tasks.
delete [] p;
但是大多数时候分配会失败。现在我想做如下:
CMyObject *p[10];
p[0] = new CMyObject[1672806];
p[1] = new CMyObject[1672806];
…
// Perform tasks
Delete [] p[0];
….
这似乎工作了一段时间。
因此,我应该将分配分成尽可能小的部分吗?或者遇到这种情况有什么好的解决办法吗?
谢谢
最佳答案
一般来说,是的,您应该将较大的分配分成较小的片段。根据您的系统,它可能没有 1GB 的连续内存。
关于c++ - 分配大内存的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25005661/