gpt4 book ai didi

c - 为什么这个C程序会崩溃?

转载 作者:行者123 更新时间:2023-11-30 18:28:52 24 4
gpt4 key购买 nike

我编写了以下代码,但是我崩溃了(没有警告或错误)并且不知道原因:

const int N = 1000;

int main(){
int *pI = calloc(N,sizeof(int));
for (int i=0;i<N;i++) {
*(pI++) = (i+1);
}
free(pI);

return EXIT_SUCCESS;
}

非常感谢您的建议!

最佳答案

您没有释放从 calloc() 接收到的原始指针:

 free(pI);

您一直在修改此指针中包含的值:

*(pI++) = (i+1);

改为:

int *p = calloc(N,sizeof(int));
int *pI = p;
// ...
free(p);

也就是说,保存从 calloc() 返回的值,然后在不再需要分配的内存时将其传递给 free()

关于c - 为什么这个C程序会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44127886/

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