有關指標的問題 |
答題得分者是:richtop
|
glenn
一般會員 發表:24 回覆:21 積分:9 註冊:2004-03-08 發送簡訊給我 |
試問使用指標時,
程式如下:
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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |