關於delete 的用法 |
尚未結案
|
IORIS
一般會員 發表:15 回覆:21 積分:7 註冊:2005-01-14 發送簡訊給我 |
假設我今天宣告以下2種陣列 那麼我要如何去 delete呢
(Image1->Picture->Bitmap->Width=240) int (*temp)[480]= new int[640][480];
int * temp1= new int [Image1->Picture->Bitmap->Width]; 我有看過有幾種delete 方法 不知道哪一種適用
1.delete[] temp
2.delete temp
3.用for回圈去刪除每一個temp[480] 請各位前輩
告訴我哪總情況要用哪總delete的方式 謝謝!!
|
harisan3
一般會員 發表:6 回覆:11 積分:3 註冊:2004-12-10 發送簡訊給我 |
用malloc<--> free
用new <--> delete 下面是我從網路收集來的資料,剛好我最近在研究,就順一起研究囉...
一維陣列建立與刪除 int *k; k=new int [100]; delete [] k; 二維陣列建立與刪除 二維: ptr[100][20]; int **ptr = new int*[100] int num; for(num=0;num<100;num ) ptr[num] = new int[20]; .... // use it for(num=0;num<100;num ) delete [] ptr[num]; delete [] ptr; 三維陣列建立與刪除 三維: a[100][20][30] int num,num1,num2; int ***p = new int **[100]; for(num=0;num<100;num ) p[num] = new int *[20]; for(num1=0;num1<100;num1 ) for(num2=0;num2<20;num2 ) p[num1][num2] = new int [30]; .... // use it for(num1=0;num1<100;num1 ) for(num2=0;num2<20;num2 ) delete [] p[num1][num2]; for(num=0;num<100;num ) delete [] p[num]; delete [] p; |
IORIS
一般會員 發表:15 回覆:21 積分:7 註冊:2005-01-14 發送簡訊給我 |
引言: 用malloc<--> free 用new <--> delete 下面是我從網路收集來的資料,剛好我最近在研究,就順一起研究囉...多謝你提供有關delete的相關資料! 但其實我最大的疑問是我一開始這種宣告 int (*temp)[480]= new int[640][480]; 這種宣告好嗎? (看起來好像是一維陣列宣告 但是內容是二維陣列 ??? ) 以及要delete他 是直接當一維陣列 用 delete [] temp就可以了嗎?一維陣列建立與刪除 int *k; k=new int [100]; delete [] k; 二維陣列建立與刪除 二維: ptr[100][20]; int **ptr = new int*[100] int num; for(num=0;num<100;num ) ptr[num] = new int[20]; .... // use it for(num=0;num<100;num ) delete [] ptr[num]; delete [] ptr; 三維陣列建立與刪除 三維: a[100][20][30] int num,num1,num2; int ***p = new int **[100]; for(num=0;num<100;num ) p[num] = new int *[20]; for(num1=0;num1<100;num1 ) for(num2=0;num2<20;num2 ) p[num1][num2] = new int [30]; .... // use it for(num1=0;num1<100;num1 ) for(num2=0;num2<20;num2 ) delete [] p[num1][num2]; for(num=0;num<100;num ) delete [] p[num]; delete [] p; |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
IORIS
一般會員 發表:15 回覆:21 積分:7 註冊:2005-01-14 發送簡訊給我 |
引言: delete [] temp; delete [] temp1; 這樣就行了 不過要注意一件事: int (*temp)[480]= new int[640][480]; 並不是動態配置 int [640][480] 而是動態配置 640 個 int [480] 差別在於你可以用變數替換640,而480的那個位置是不能用變數的那我大概瞭解了 在問一個問題喔 int (*temp)[480]= new int[640][480]; 這總宣告方式 跟另一種 int **ptr = new int*[100] 哪一總宣告比較好呢? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |