C中的二维阵列内存分配崩溃

时间:2014-01-31 16:26:11

标签: 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: %d ",r);
    printf("1.Addy: %p ",&O[r]);
    O[r] = (double*)calloc(4,sizeof(double));
    printf("2.Addy: %p\n",&O[r]);
}

我也尝试过使用不同形式释放内存:

for (r = 0; r < 3*c; r++)
        free(O[r]);

&安培;

free(O);

但他们只是在不同点崩溃。以及没有释放内存时。

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

Memory locations

0 个答案:

没有答案