gpt4 book ai didi

c - 为什么 memcpy 会更改原始数组的最后一个元素?

转载 作者:行者123 更新时间:2023-11-30 21:20:06 25 4
gpt4 key购买 nike

我在这段代码中遇到了一个奇怪的错误:

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 会奇怪地影响最后一个元素。

最佳答案

N 元素组成的数组具有有效索引 01、...、N - 1 。您的最后一轮循环访问 a[N],它超出了范围并且具有未定义的行为。

关于c - 为什么 memcpy 会更改原始数组的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43443456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com