線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1365
推到 Plurk!
推到 Facebook!

POINT用指標回傳問題

答題得分者是:dllee
moonsea
一般會員


發表:11
回覆:15
積分:5
註冊:2007-10-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-16 12:04:41 IP:122.122.xxx.xxx 訂閱
我把一個搜尋POINT的程式寫成class,
但回傳時發生問題(數字很大,不是點的資訊),
不知道是否是型態會是宣告錯誤所致,謝謝

[code cpp]
//---class
POINT *Get4BoundP(TImage *Image3,int T)
{
//---0為搜尋白色點,1為搜尋黑色點
int ImgH; //---Image3的寬;
int ImgW; //---Image3的長;
//---找到4個點
POINT Pt[4];
}
//---主程式
POINT *BPoint=new POINT[4];
BPoint=Get4BoundP(Image3,0);
//---建一個新的POINT集
POINT *RPoint=new POINT[(BPoint[2].y-BPoint[0].y)-1];
[/code]

dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-18 17:58:44 IP:114.32.xxx.xxx 訂閱
您的程式有很大的問題。

問題1 以下並不是一個 Class


[code cpp]
POINT *Get4BoundP(TImage *Image3,int T)
{
//---0為搜尋白色點,1為搜尋黑色點
int ImgH; //---Image3的寬;
int ImgW; //---Image3的長;
//---找到4個點
POINT Pt[4];
}

[/code]


這只能算是一個副函式,這樣的函式 Compile 應該會有警告訊息,提示您沒有回傳值!!

問題2

[code cpp]
POINT *BPoint=new POINT[4];
BPoint=Get4BoundP(Image3,0);

[/code]

第一行已指定 BPoint 已經是 new 出來的 POINT[4]
第二行又把 BPoint 指標指到別的地方,這樣去讀取 BPoint 很容易發生 Exception
同時,第一行所 new 出來的 POINT[4] 的記憶體空間,就沒正常釋放了。(Memory Leakage)

而您所謂的值很大,因是為第二行根本就已亂指指標,值很大很亂是正常的。

改成如下的介面:

[code cpp]
void Get4BoundP(TImage *Image3,int T, POINT *Pt)
{
//---0為搜尋白色點,1為搜尋黑色點
int ImgH; //---Image3的寬;
int ImgW; //---Image3的長;
//---找到4個點
// POINT Pt[4]; ← 不必再宣告, 用輸入的參數即可
// ... 作你要的運算, 搜尋點... 以下是隨便給值測試
Pt[0].X=0;
Pt[0].Y=0;
Pt[1].X=100;
Pt[1].Y=100;
Pt[2].X=200;
Pt[2].Y=200;
Pt[3].X=300;
Pt[3].Y=300;
}
//---主程式
POINT *BPoint=new POINT[4];
Get4BoundP(Image3,0,BPoint);
//---把 BPoint 的內容檢查看看是否正確

[/code]

這樣,應該會比較 OK。
------
http://www.ViewMove.com
編輯記錄
dllee 重新編輯於 2009-06-18 18:01:15, 註解 無‧
moonsea
一般會員


發表:11
回覆:15
積分:5
註冊:2007-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-22 00:45:58 IP:122.122.xxx.xxx 訂閱
根據站長大哥建議,
看了其他部分函數,
發現這部分指標真的指錯了,
感謝站長大哥詳細的說明,
釐清了一些觀念。
編輯記錄
moonsea 重新編輯於 2009-06-22 10:02:45, 註解 無‧
系統時間:2024-04-20 8:32:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!