我正在编写代码以声明几个大型数组并使用元素等进行操作。
当代码到达一个部分,声明一个临时数组时,它会在生成大约 1.8m 列后抛出一个 bad_alloc。
代码是:
int** tempArray1= new int*[PHLengths[n-1]];
for(int i =0;i<PHLengths[n-1];i++) {
tempArray1[i]=new int[PrimeDatL];
}
在考虑 PrimeDatL ~417 和 PHLengths[n-1]~3630140 的情况下。
通常我会认为这只是没有足够的 RAM 的问题(碰巧它会按照当前定义的那样填充不足,所以我可以声明一个动态数组并沿途填充/扩展)但是当我密切关注计算机资源时转到大约 3gb/5gb 然后给出错误。
这里的一个微妙之处是我在 virtualbox 上使用 ubuntu,所以这会导致内存地址问题吗?认为这个错误只发生在我完全用完 RAM 时是否天真?
我还尝试在程序的早期声明它,看看是否存在内存问题,同样的问题。