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

时间:2017-05-23 07:03:22

标签: c crash

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

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;
}

我感谢任何建议!

1 个答案:

答案 0 :(得分:4)

您没有发布从calloc()收到的原始指针:

 free(pI);

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

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

改为:

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

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