我遇到了一个奇怪的错误在此代码:为什么memcpy会改变原始数组的最后一个元素?
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 0
鉴于预期的输出应该是2,3,...,19,20。
将数组复制到b奇怪地影响了最后一个元素。
与您的问题无关:不确定您应该在最后一行使用'N * sizeof(b)'。 'sizeof(b)'会给你一个int指针的大小,而你想要一个int的大小。 –
我期待'BAD_ACCESS'因为'i <= N' – 2017-04-17 00:09:39
如果我使用sizeof(b),我会得到错误。如果使用sizeof(int),输出仍然相同 –