C语言中的2D数组内存分配崩溃

C语言中的2D数组内存分配崩溃,c,arrays,memory-management,memory-leaks,C,Arrays,Memory Management,Memory Leaks,我似乎在使用calloc为2D数组分配内存时遇到了问题 当为数组分配第二维时,calloc在IDE之外作为独立可执行文件时崩溃,但在调试时工作正常。我已经经历了我能想到的一切,却对为什么会发生这种事感到困惑;特别是几天前它还可以正常工作的时候。这似乎是一个自发的故障,不会停止 该代码位于的单独函数中,它被多次调用 O = (double**)calloc(3*cc,sizeof(double*)); for (r = 0; r < 3*cc; r++){ printf("Row:

我似乎在使用calloc为2D数组分配内存时遇到了问题

当为数组分配第二维时,calloc在IDE之外作为独立可执行文件时崩溃,但在调试时工作正常。我已经经历了我能想到的一切,却对为什么会发生这种事感到困惑;特别是几天前它还可以正常工作的时候。这似乎是一个自发的故障,不会停止

该代码位于的单独函数中,它被多次调用

O = (double**)calloc(3*cc,sizeof(double*));
for (r = 0; r < 3*cc; r++){
    printf("Row: %d ",r);
    printf("1.Addy: %p ",&O[r]);
    O[r] = (double*)calloc(4,sizeof(double));
    printf("2.Addy: %p\n",&O[r]);
}
但它们只是在不同的点崩溃。以及当内存未被释放时

这是它在每次调用期间分配的内存地址的屏幕截图,它们似乎都被释放并适当地重用,但随后崩溃。如果有人能告诉我发生了什么,那就最好了


发布sscce。您应该发布代码的其余部分,或者最基本的部分,以了解函数是如何被调用的。“代码在单独的函数中,被多次调用”不够清楚(调用了多少次?)此代码看起来还可以。我认为您在其他地方遇到了问题-可能是数组越界访问正在覆盖它不应该覆盖的内容,并且
free()
会被混淆。在发布时,请仔细检查以确保正确地包含
,同时执行此操作。
for (r = 0; r < 3*c; r++)
        free(O[r]);
free(O);