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

以下這斷code該如何記憶體歸還呢

尚未結案
dragonhippopdc
一般會員


發表:45
回覆:51
積分:19
註冊:2005-01-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-06 10:51:47 IP:203.68.xxx.xxx 未訂閱
Byte *ptr2;
  int x,y;
  Graphics::TBitmap *Bitmap1;
  Bitmap1=new Graphics::TBitmap;
  Bitmap1=Form1->Image3->Picture->Bitmap ;
  Bitmap1->PixelFormat=pf24bit;
   for ( y = 0; y < 10; y  )
     {
     ptr2 = (Byte *)Bitmap1->ScanLine[y];
     for ( x = 0; x < ImageWidth; x  )
     {
     ptr2[x*3]=tableBuffer[0][(9-y)*ImageWidth x];
     ptr2[x*3 1]=ptr2[x*3];
     ptr2[x*3 2]=ptr2[x*3];
     }
     }
    Bitmap1->Assign(Bitmap1);
請問以上這個Bitmap1要如何歸還呢?我這段code是在一個迴圈中重覆執行的
但是他會不斷的吃記憶體所以請問該歸還?
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-06 11:25:39 IP:220.135.xxx.xxx 未訂閱
引言:
Byte *ptr2;
  int x,y;
  Graphics::TBitmap *Bitmap1;
  Bitmap1=new Graphics::TBitmap;
  Bitmap1=Form1->Image3->Picture->Bitmap ;
  Bitmap1->PixelFormat=pf24bit;
   for ( y = 0; y < 10; y  )
     {
     ptr2 = (Byte *)Bitmap1->ScanLine[y];
     for ( x = 0; x < ImageWidth; x  )
     {
     ptr2[x*3]=tableBuffer[0][(9-y)*ImageWidth x];
     ptr2[x*3 1]=ptr2[x*3];
     ptr2[x*3 2]=ptr2[x*3];
     }
     }
    Bitmap1->Assign(Bitmap1);
delete Bitmap1
請問以上這個Bitmap1要如何歸還呢?我這段code是在一個迴圈中重覆執行的
但是他會不斷的吃記憶體所以請問該歸還?
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-06 13:31:04 IP:218.160.xxx.xxx 未訂閱
1. Bitmap1=new Graphics::TBitmap; Bitmap1=Form1->Image3->Picture->Bitmap ; // 有了這一行,上面一行是多此一舉,而上面一行所要的記憶體空間,從此你的程式就無法控制了. 2. Bitmap1->Assign(Bitmap1); //這一行應該可省略. 3. 或許把這兩行刪掉就可以了. Bitmap1=new Graphics::TBitmap; Bitmap1->Assign(Bitmap1);
dragonhippopdc
一般會員


發表:45
回覆:51
積分:19
註冊:2005-01-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-08 16:48:34 IP:220.134.xxx.xxx 未訂閱
各位大大~很抱歉這個code是我自己改過的~我放上原先我由書上看到的code  
Byte *ptr2;
  int x,y;
  Graphics::TBitmap *Bitmap1,*Bitmap2;
  Bitmap2=new Graphics::TBitmap;
  Bitmap1=Form1->Image4->Picture->Bitmap ;
  //Bitmap1->PixelFormat=pf24bit;
  //Bitmap2->PixelFormat=pf24bit;
  Bitmap2->Assign(Bitmap1);
   for ( y = 0; y < 20; y  )
     {
       ptr2 = (Byte *)Bitmap2->ScanLine[y];
       for ( x = 0; x < ImageWidth; x  )
        {
          ptr2[x*3]=tempBuffer[(19-y)*ImageWidth x];
          ptr2[x*3 1]=ptr2[x*3];
          ptr2[x*3 2]=ptr2[x*3];
        }
     }
    Bitmap1->Assign(Bitmap2);
    delete Bitmap2;
 
但是因為它一定有同樣的問題所以我才自己改了一下~但是還是一樣~ 請問各位大大以上這個code那邊有問題呢~謝謝各位大大
系統時間:2024-05-05 20:59:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!