我似乎在使用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);
但他们只是在不同点崩溃。以及没有释放内存时。
这是它在每次调用期间分配的内存地址的屏幕截图,它们似乎都被释放并适当地重用,但随后崩溃。如果有人能告诉我这是最好的。