我编写了以下代码,但是我遇到了崩溃(没有警告或错误)并且不知道原因:
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;
}
我感谢任何建议!
答案 0 :(得分:4)
您没有发布从calloc()
收到的原始指针:
free(pI);
您一直在修改此指针中包含的值:
*(pI++) = (i+1);
改为:
int *p = calloc(N,sizeof(int));
int *pI = p;
// ...
free(p);
也就是说,保存从calloc()
返回的值,然后在不再需要分配的内存时将其传递给free()
。