声明数组时Bad_alloc似乎足够内存

时间:2013-09-13 02:23:30

标签: c++ arrays

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

当代码到达一个部分,声明一个临时数组时,它会在生成大约1.8米列后抛出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的情况下才真是天真?

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

1 个答案:

答案 0 :(得分:1)

如果您使用的是32位计算机,那么无论您实际拥有多少内存,都只能处理大约4GB的内存,因此这可能就是为什么它会在“3gb / 5gb”之间剥落。