[問題] 動態記憶體配置與巢狀結構的關係?

看板C_and_CPP (C/C++)作者 (我要去澳洲玩!!!)時間16年前 (2010/02/18 01:38), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/1
遇到的問題: 我想請教一下關於動態記憶體配置與區塊巢狀結構之間的關係.... 我現在在弄一個模擬的程式 程式的變數宣告幾乎都是用二維的動態記憶體配置來實現 程式主要的架構大概如下 =========================================================================== int main(){ 宣告a部分會用到的二維動態記憶體變數(也有一些一維的) . . . 宣告b部分會用到的二維動態記憶體變數(也有一些一維的) . . . 宣告c部分會用到的二維動態記憶體變數(也有一些一維的) . . . switch(type){ case a: ******** break; case b: ******** break; case c: ******** break; } 宣告a部分會用到的二維動態記憶體變數(也有一些一維的) //下面switch會用到的// . . . 宣告b部分會用到的二維動態記憶體變數(也有一些一維的) //下面switch會用到的// . . . 宣告c部分會用到的二維動態記憶體變數(也有一些一維的) //下面switch會用到的// . . . switch(type){ case a: ******** break; case b: ******** break; case c: ******** break; } return0; } 以上大概是我的程式架構 其中二維動態記憶體變數的宣告總共會有100多個以上 當執行編譯後會得到"程式碼區塊的巢狀結構超過128層的限制。請簡化巢狀結構"的訊息 按照意思似乎是我在某一部分用了if~else~if~else....很多次 (不知道有沒有會錯意?) 不過..... 我試著先不要宣告那麼多的動態記憶體變數,那麼編譯器就不會出現這訊息 所以感覺是我使用的動態記憶體變數太多??? 還是??? 想請問造成這種錯誤的原因是什麼?? 提問的方式可能很不專業....先說聲抱歉了! ps順便想問釋放二維動態記憶體變數的方式是如下嗎? //宣告// complex **out=(complex**)malloc(a*b*sizeof(complex*)); for(k=0;k<b;k++){ out[k]=(complex*)malloc(a*sizeof(complex)); } //釋放// free(out); 程式跑出來的錯誤結果: C1061 程式碼區塊的巢狀結構超過 128 層的限制。請簡化巢狀結構 開發平台 : VC++ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.174.235

02/18 03:56, , 1F
所有malloc來的記憶體都要手動free才行,你只free
02/18 03:56, 1F

02/18 03:57, , 2F
out是不行的。對了文章中間是不是有跳針阿= =?
02/18 03:57, 2F

02/18 04:53, , 3F
for(k=0; k<b; k++) free(out[k]);
02/18 04:53, 3F

02/18 04:53, , 4F
free(k);
02/18 04:53, 4F

02/18 10:48, , 5F
f大 你是說巢狀結構與動態記憶體那邊嗎?
02/18 10:48, 5F

02/18 15:43, , 6F
我猜是你忘了哪裡的右括號 然後還一直 copy-paste...
02/18 15:43, 6F
文章代碼(AID): #1BV2cD2M (C_and_CPP)
文章代碼(AID): #1BV2cD2M (C_and_CPP)