很軌異的動態產生的問題喔 |
|
khaupe
一般會員 發表:28 回覆:25 積分:15 註冊:2003-06-30 發送簡訊給我 |
所有ED[i]->Text取出文字內容都沒問題
但只要i為0就一定出錯 而且宣告TEdit *ED[10]
若是for(i = 0 ; i<=10 ; i ){
ED[i] = new TEdit(Application)
.............
} 則StringGrid的開檔必出問題
必須要i<=9才行
附加檔案:40012_測試.zip
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
C/C 語言裡面定義的array是從0到n-1
也就是你定義了 TLabel *LB[14] 的話
合理的可用範圍為 LB[0]到LB[13]
取用LB[14]會存取到別的記憶體空間,也就是如此
for(int i = 10 ; i <= 14 ; i ){
LB[i] = new TLabel(Application) ;
LB[i]->Parent = GB[4] ;
LB[i]->Top = 100 (i-6)*20 ;
LB[i]->Left = 10 ;
}
當i=14產生新的TLabel的時候,會寫到別的記憶體空間
很不幸的,剛好把新產生的資料(記憶體空間指標)覆寫到ED[0]
(因為在.h的宣告中,ED的宣告剛好接在LB的後面)
導致ED[0]讀出的資料都是錯誤的 第二個問題也是相同的問題
ED[10]產生的時候也是會寫到你不應該去存取的記憶體空間
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |