私は反復的にマージソートを実装するC++プログラムを作成しています。メインコードが以下に示されていますが、別のプログラムで同じ方法でさらに多くのメモリ(1 GB)を割り当てたにもかかわらず、「アクセス違反書き込み場所0xXXXXXXXX」エラーが発生する理由を理解できません。アクセス違反の書き込み場所0xXXXXXXXX
void main()
{
//int a[size];
int* a = new int(size); //initialising an int array dynamically contains 16777216 el
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]<<" ";
//printf("%d ", a[i]);
}
cout<<endl;
system("PAUSE");
}
'new int(size)'ではなく、 'new int [size]'を使用します。後者はそれを作成し、それを 'size'に初期化します。また、http://www2.research.att.com/~bs/bs_bsq2.html#void-main – chris
'void main()'?あなたはどんな本を使っていますか? – Flexo
ありがとうございました... – Nashwan