私はこのコードでは奇妙なバグが発生しました:私は期待出力がされているはずのに対し、配列、出力= 2,3、...、19 0memcpyが元の配列の最後の要素を変更するのはなぜですか?
をプリントアウトした場合
int *a = (int*) malloc(N*sizeof(int)); // allocate array
int i;
for (i=2; i<=N; i++)
{
a[i] = i;
}
int *b = (int*) malloc(N*sizeof(int));
memcpy(b, a, N*sizeof(b));
を2,3、...、19,20。
bに配列をコピーすると、最後の要素に不思議な影響があります。
あなたの問題とは関係ありません:あなたの最終行に 'N * sizeof(b)'を使用するべきかどうか不安です。 'sizeof(b)'はintポインタのサイズを与えますが、intのサイズを指定します。 –
私は 'i <= N'のために' BAD_ACCESS'を期待していました –
sizeof(b)を使うとエラーになります。 sizeof(int)を使用した場合、出力は同じです –