C++ 声明数组时分配错误,似乎内存不足

C++ 声明数组时分配错误,似乎内存不足,c++,arrays,C++,Arrays,我正在编写代码来声明几个大数组,并对元素等进行操作 当代码到达一个部分,声明一个临时数组时,它在生成大约1.8m列后抛出一个错误的alloc 代码是: int** tempArray1= new int*[PHLengths[n-1]]; for(int i =0;i<PHLengths[n-1];i++) { tempArray1[i]=new int[PrimeDatL]; } int**tempArray1=新int*[n-1]]; 对于(inti=0;i如果您在32位机

我正在编写代码来声明几个大数组,并对元素等进行操作

当代码到达一个部分,声明一个临时数组时,它在生成大约1.8m列后抛出一个错误的alloc

代码是:

int** tempArray1= new int*[PHLengths[n-1]];

for(int i =0;i<PHLengths[n-1];i++) {

 tempArray1[i]=new int[PrimeDatL]; 

}
int**tempArray1=新int*[n-1]];

对于(inti=0;i如果您在32位机器上,那么无论实际拥有多少内存,您只能寻址大约4GB的内存,所以这可能就是为什么它在“3gb/5gb”之间急剧膨胀的原因.

啊,是的,这是一个很好的观点。我以为我已经安装了64位虚拟机,但也许我没有安装……谢谢!你给虚拟机分配了足够的内存吗?这似乎是一个显而易见的问题,这将是一个值得关注的问题。是的,我现在的问题是计算出多少是“足够”内存(我无法全部分配,或者主机耗尽)。我将就此写另一个问题(与mpz_类大小有关),谢谢!如果您在Windows上,请阅读。您可能需要切换到64位编译器模式。