0

我正在编写代码以声明几个大型数组并使用元素等进行操作。

当代码到达一个部分,声明一个临时数组时,它会在生成大约 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 时是否天真?

我还尝试在程序的早期声明它,看看是否存在内存问题,同样的问题。

4

1 回答 1

2

如果您使用的是 32 位机器,则无论您实际拥有多少内存,您只能处理大约 4GB 的内存,所以这可能就是它在“3gb/5gb”之间脱落的原因。

于 2013-09-13T02:27:34.513 回答