Каждую 1 секунду функция работает.
моя система линукс.
Беги внезапно умирает.
-----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;
}
остановка программы и сообщение ↓
прекращение вызова после выброса экземпляра ‘std :: bad_alloc’ what (): std :: bad_alloc
bad_alloc
исключение вызвано сбоем в распределении памяти (поэтому один из ваших new
). terminate()
вызывается автоматически, потому что вы не поймаете это исключение.
Основная причина bad_alloc в том, что у вас недостаточно памяти (или свободное хранилище повреждено). Это может произойти, например, если вам не удастся освободить память в некоторых циклах.
На самом деле, в вашем коде кажется, что вы неправильно удаляете массивы US_INT[i]
, Вы должны использовать delete[]US_INT[i]
, Как главное правило, каждый раз, когда вы используете new[]
, вы должны использовать delete[]
,
P.S .: Вы также можете выбрать векторы вместо массивов и освободить свой ум от проблем с памятью.
Других решений пока нет …