全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:697
推到 Plurk!
推到 Facebook!

有關指標的問題

答題得分者是:richtop
glenn
一般會員


發表:24
回覆:21
積分:9
註冊:2004-03-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-13 12:35:19 IP:218.170.xxx.xxx 未訂閱
試問使用指標時, 程式如下: float *a,**b,***c; a=new float [4]; b=new float *[4]; c=new float **[4]; for(int i=0;i<4;i ) { b[i]=new float [5]; c[i]=new float *[5]; for(int j=0;j<5;j ) b[i][j]=new float [2]; } 那要把配置的空間移除, 是要如何做呢? 是像下面的方式就可以了嗎? delete a; delete b; delete c;
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-13 13:26:23 IP:211.76.xxx.xxx 未訂閱
glenn 您好:    一維指標確實可以用:delete [] a; 釋放所配置的記憶體。 但二維以上的指標,則必須以配置相反的順序將記憶體釋放。或者可以這麼說:指標配置記憶體的釋放是以配置相反的順序來進行。 越先配置的記憶體,其下可能又再配置記憶體,所以如果將先配置的記憶體釋放,則系統將無從得知其下記憶體的配置位址,也就是說無法將該記憶區塊釋放,而造成記憶體漏失。    所以delete的順序是:(您程式中的b[i][j],c[i][j]寫反了) 1) delete [] c[i][j]; 2) delete [] c[i]; 3) delete [] c; 3) delete [] b[i]; 4) delete [] b;    提供參考。
glenn
一般會員


發表:24
回覆:21
積分:9
註冊:2004-03-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-13 19:22:56 IP:218.170.xxx.xxx 未訂閱
非常感謝richtop大大的幫助, 我的問題已經解決了, 謝謝。
系統時間:2024-07-08 11:41:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!