我在这段代码中遇到了一个奇怪的错误:
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));
如果我打印出数组a,输出= 2,3,...,19 0
预期产量应为2,3,......,19,20。
将数组复制到b上会对最后一个元素产生奇怪的影响。
答案 0 :(得分:2)
N
元素数组包含有效索引0
,1
,...,N - 1
。你的最后一轮循环访问a[N]
,它超出界限并且有未定义的行为。