每1秒,功能起作用 我的系统是linux。 奔跑突然死了。
-----global-------
static int arrayNum[33000];
-------------------
function(){
unsigned short int** US_INT;
US_INT= new unsigned short int*[255];
for(int i = 0; i < 255; i++)
{
US_INT[i] = new unsigned short int[128];
memset(US_INT[i], 0, sizeof(unsigned short int) * 128);
}
double x;
double y;
int cnt= 0;
int nArrayCount=0;
for(int i = 0; i < 255; i++)
{
for(int j=0;j<128;j++){
x=j;
y=cnt
nArray[nArrayCount]=US_INT[i][j];
nArrayCount++;
}
cnt=cnt+(256/255);
}
for(int i = 0; i < 255; i++)
{
delete US_INT[i];
}
delete[] US_INT;
}
程序停止。和消息↓ 在抛出&#39; std :: bad_alloc&#39;的实例后终止调用what():std :: bad_alloc
答案 0 :(得分:5)
bad_alloc
异常是由内存分配失败触发的(所以new
之一)。自动调用terminate()
,因为您没有捕获此异常。
bad_alloc的根本原因是您没有足够的内存(或者免费存储已损坏)。例如,如果你在某些循环中没有释放内存,那么就会发生这种情况。
事实上,在您的代码中,您似乎没有正确删除数组US_INT[i]
。您必须使用delete[]US_INT[i]
。作为general rule,每次使用new[]
时,都应使用delete[]
。
PS: 您也可以选择使用vectors而不是数组,让您的心灵摆脱内存管理问题。