我目前在使用数据声明或填充大型数组时遇到问题,因为我得到一个"内存不足"的对话框,源自CMemoryException.
我试图用一个对象的大约50000个元素创建一个数组或向量(试过两个),其中sizeof(MyObjectClass)返回大约37000个字节.
如果我尝试按元素填充向量或CArray元素,那么在获取Out Of Memory异常之前,我会在16000个元素附近填充.那应该接近600MB?
我在机器上有8GB RAM,根据Windows任务管理器只使用4GB.因此物理RAM的数量不应该带来问题.我在Visual Studio 2010中运行C++ MFC,32位.
如果我试着写
MyObjectClass* heaparray = new MyObjectClass[50000];
然后我立即在那一行上得到了同样的内存不足错误.
有任何想法吗?先感谢您!
更新:我还尝试使用以下字段创建一个TestStruct:
struct TestStruct { long long field1; GUID field2; GUID field3; GUID field4; TCHAR field5[256]; TCHAR field6[4]; TCHAR field7[258]; TCHAR field8[1026]; TCHAR field9[258]; TCHAR field10[16386]; TCHAR field11[258]; }; TestStruct* heapArr = new TestStruct[50000];
仍然相同...执行最后一行代码时出现"Out of Memory"异常.在处理大数据时,堆不应该只是由RAM(或多或少)限制的可能性之一.然而......因为它已经在600MB的分配空间崩溃了,我不能同意这是非常大的数据......或者我应该?:/