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

關於delete 的用法

尚未結案
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-05 18:05:42 IP:211.76.xxx.xxx 未訂閱
假設我今天宣告以下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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-06 22:05:28 IP:220.139.xxx.xxx 未訂閱
用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-09 19:56:39 IP:211.76.xxx.xxx 未訂閱
引言: 用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;     
多謝你提供有關delete的相關資料! 但其實我最大的疑問是我一開始這種宣告 int (*temp)[480]= new int[640][480]; 這種宣告好嗎? (看起來好像是一維陣列宣告 但是內容是二維陣列 ??? ) 以及要delete他 是直接當一維陣列 用 delete [] temp就可以了嗎?
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-10 20:57:09 IP:221.169.xxx.xxx 未訂閱
delete [] temp; delete [] temp1; 這樣就行了 不過要注意一件事: int (*temp)[480]= new int[640][480]; 並不是動態配置 int [640][480] 而是動態配置 640 個 int [480] 差別在於你可以用變數替換640,而480的那個位置是不能用變數的
IORIS
一般會員


發表:15
回覆:21
積分:7
註冊:2005-01-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-13 00:13:46 IP:220.139.xxx.xxx 未訂閱
引言: 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] 哪一總宣告比較好呢?
系統時間:2024-05-03 22:49:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!