gpt4 book ai didi

c - 使用 malloc 分配内存时出错

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:05 25 4
gpt4 key购买 nike

int n;
scanf("%d",&n);
int *score;
score=(int *)malloc(sizeof(int)*n);
int i;
for (i=0;i<n;i++)
{
scanf("%d",sizeof(int)*i+score);
}
printf("ok");

在上面的代码中,我得到了一个错误,但是当我注释最后一行 printf 时,程序运行正确。问题是什么??(我想在不使用数组的情况下从用户那里给出 n 个数字)

最佳答案

score + i 形式的指针算法已经以 sizeof(*score) 的倍数完成。因此,当您编写 score + i * sizeof(int) 时,您会乘以项目的大小。您超出了缓冲区的范围。

要么简单地写成score + i,要么如果你坚持自己做乘法,一定要先转换为字符指针类型:

(int*)((char*)score + i * sizeof(int))

哦,还有don't cast the result of malloc . C 不需要它,而且它有点单调。

关于c - 使用 malloc 分配内存时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47966690/

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