我有一個函數在執行過程中被調用了很多次。在這個函數中我分配數組:在一個函數中分配內存,然後釋放它
double **MUDG_table;
//dynamic allocate array of MUDG_table (1st Dimension)
MUDG_table = calloc(arr_row,sizeof(double *));
//check if the memory has been allocated correctly
if (MUDG_table==NULL)
{
printf("Error allocating memory!\n"); //print an error message
return 1; //return with failure
}
for (cv02=0;cv02<arr_row;cv02++)
{
MUDG_table[cv02] = calloc(arr_column, sizeof(double));
//check if the memory has been allocated correctly
if (MUDG_table[cv02]==NULL)
{
printf("Error allocating memory!\n"); //print an error message
return 1; //return with failure
}
}
當我與計算並返回我想要的值之前完成我嘗試以釋放內存:
//free memory
for (cv02=0;cv02<arr_row;cv02++)
{
free(MUDG_table[cv02]);
}
free(MUDG_table);
和崩潰。
如果我刪除它,它會工作幾次(正如我所說的函數在循環中每次調用多次不同的參數),然後它崩潰。有任何想法嗎?
請填寫數據並釋放它之間的代碼。你爲什麼使用'calloc()'你用'0'留下很多值? –
@iharob您是否建議嘗試使用malloc?到目前爲止,我所有的數組都使用calloc,而且我沒有問題。 – kat
如果你不叫計算部分,它也會崩潰嗎?如果不是,那麼你可能在計算部分的某個地方有緩衝區溢出/下溢。順便說一下'calloc'確定。無需將'calloc'改爲'malloc'。 –