[問題] 動態記憶體配置與巢狀結構的關係?
遇到的問題:
我想請教一下關於動態記憶體配置與區塊巢狀結構之間的關係....
我現在在弄一個模擬的程式
程式的變數宣告幾乎都是用二維的動態記憶體配置來實現
程式主要的架構大概如下
===========================================================================
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
02/18 03:56, 1F
→
02/18 03:57, , 2F
02/18 03:57, 2F
推
02/18 04:53, , 3F
02/18 04:53, 3F
→
02/18 04:53, , 4F
02/18 04:53, 4F
→
02/18 10:48, , 5F
02/18 10:48, 5F
推
02/18 15:43, , 6F
02/18 15:43, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章