이 코드는 Visual Studio 2010에 해당하는 힙 손상을 발생시킵니다. 힙 손상의 원인은 무엇입니까? 이 코드의 어떤 부분이 원인입니까?대용량 메모리 할당 크기의 힙 손상 C++
#define size 65536
int main()
{
int* a = new int[size];//size is equal to
srand(time(NULL));
for(int i = 0 ; i < size; i++)
{
a[i]= 1 + rand() % 10;
}
for(int i = 0; (size/2)/pow((double)2, i)>= 1; i++)
{
int n = pow((double)2, i);
int offset = 0;
for(int j = 0; j < (size/2)/pow((double)2, i); j++)
{
int* tmp = new int[n];
merge(a + offset, n, a + offset + n, n, tmp);
memcpy(a + offset, tmp, n*2 * sizeof(int));
offset += pow((double)2, i+1);
}
}
for(int i = 0; i < size; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
system("PAUSE");
return 0;
}
'병합'이란 무엇입니까? –
또한 메모리 누수가 있습니다. 'tmp'가 가리키는 메모리를 결코 해제하지 않습니다. –
공극 병합 (INT * A, INT의 a_size, INT의 * B를 INT의 b_size, INT의 * 온도) (INT A_I = 0, b_i = 0, C_I = 0; C_I
Nashwan