動態宣告陣列問題 |
答題得分者是:khaupe
|
Allanx
一般會員 發表:13 回覆:20 積分:6 註冊:2003-10-06 發送簡訊給我 |
|
khaupe
一般會員 發表:28 回覆:25 積分:15 註冊:2003-06-30 發送簡訊給我 |
請問各位大大:
我在全域宣告了一個指標float *a,然後在button中cole如下
int x=100;
float *a=new flaot[x]
~~~~~~~~~~~~~~~~~~~~~~
這一行改成如下:
a=new float[x] ; 然後這100個陣列裡都儲存了數值之後...
在另一個button裡code
Edit1->Text=FloatToStr(a[0]);
結果一直在上面那行出現bug,不知道問題出在哪??
是動態陣列裡的值無法是全域的..還是...希望各位大大幫幫忙!! 原因:你在Button1裡另外宣告了一個指標*a
而這個*a一離開Button1後就被釋放掉了
因此Button2裡抓到的是全域的*a
不幸的是你根本沒為這個全域的*a配置記憶體
所以就出錯啦~~~
|
arisaka_matsuri
高階會員 發表:25 回覆:205 積分:231 註冊:2003-10-19 發送簡訊給我 |
Allanx 你好:
照你的情況來看,如果想利用全域指標的話,那麼在button按下去的事件「函式內」
float *a = new flaot[x];要修正為 a = new flaot[x];因為你原來的寫法,a是宣告在函式中的,它的生存空間只在函式中(但是用new指令動態配置記憶體跟這無關),因此當你在另一個button的事件函式內要使用a時,用的是宣告為全域的指標,並且其指向位置unknow,當然會出錯。若還不清楚,參看 C Prime 3rd Ed. 第八章「生存空間與生命週期」,或再問吧~< > < >慢了15秒~~ 發表人 - arisaka_matsuri 於 2004/05/17 22:42:40 發表人 - arisaka_matsuri 於 2004/05/17 22:44:09 |
Allanx
一般會員 發表:13 回覆:20 積分:6 註冊:2003-10-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |