[問題] 四維動態陣列無法free掉

看板C_and_CPP (C/C++)作者 (獨立黑色色彩)時間16年前 (2009/03/27 09:21), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串1/2 (看更多)
我一始先宣告一個U[DimN1][DimN2][DimN3][DimT1]的動態陣列 但我free不掉 我不知道哪裡出了問題 請大家幫我看看 #include <stdio.h> /*stdio.h printf的功能*/ #include <stdlib.h> /*system指令的程式庫*/ #include <math.h> /*數學指令的程式庫*/ #include <conio.h> int main( void ) { int DimN1=10,DimN2=10,DimN3=10,DimT1=10;/*隨不同問題改值*/ /*產生 U[DimN1][DimN2][DimN3][DimT1]*/ double ****U = (double****)malloc( DimN1+1*sizeof(int***) ); int i, j,k,k1; for(i=0; i<DimN1+1; i++) { U[i] = (double***)malloc( DimN2+1*sizeof(int**) ); for(j=0; j<DimN2+1; j++) { U[i][j] = (double**)malloc(DimN3+1*sizeof(int*) ); for(k=0; k<DimN3+1; k++) { U[i][j][k] = (double*)malloc(DimT1+1*sizeof(int) ); } } } /* 用完記得free, 反向順序*/ for(i=0; i<DimN1; i++) { for(j=0; j<DimN2; j++) { for(k=0; k<DimN3; k++) { free(U[i][j][k]); } free(U[i][j]); } free(U[i]); } free(U); } -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.199

03/27 09:42, , 1F
malloc你要給它需要配置的實際size, 你malloc出來的空間
03/27 09:42, 1F

03/27 09:43, , 2F
DimNx+1*sizeof(...) 這...你還記得要先乘除後加減吧...
03/27 09:43, 2F

03/27 09:49, , 3F
要上班了, 趕時間直接回文在下面騙點P幣^^||
03/27 09:49, 3F

03/27 09:53, , 4F
感謝大家呀 我還在努力理解中
03/27 09:53, 4F
文章代碼(AID): #19p2eJZG (C_and_CPP)
文章代碼(AID): #19p2eJZG (C_and_CPP)