このコードは、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 * C) { \t(INT a_iを= 0、b_i = 0、C_I = 0; C_I
Nashwan