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

一個有關於vector的問題

 
z858328y
一般會員


發表:7
回覆:9
積分:3
註冊:2006-08-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-29 12:54:51 IP:61.217.xxx.xxx 未訂閱

各位高手:

想請問一下,我用了下面的方式宣告了一個動態的二維陣列,可是在resize時,CodeGuard Log會出現一個錯誤:Pointer in freed memory。請問一下問題可能在哪裡,謝謝。

vector > m_dCriterion;

m_dCriterion.resize(40);
for(int nIndex=0;nIndex<40;nIndex )
m_dCriterion[nIndex].resize(12); //一執行到這裡就會出現CodeCuardError -- Pointer in freed memory

而且在關閉程式時,也會因為這樣而出現CPU視窗,麻煩各位高手幫幫忙,謝謝。

justdo
高階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-29 20:01:35 IP:59.105.xxx.xxx 未訂閱
我測試沒問題,程式看起來也應該是沒有問題的呀
z858328y
一般會員


發表:7
回覆:9
積分:3
註冊:2006-08-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-30 08:53:16 IP:59.115.xxx.xxx 未訂閱

Justdo大哥:

我是有把CodeGuard Validation的功能打開後才會有這樣的訊息出現,如果把CodeGuard Validation的功能關閉的話,就不會出現這樣的問題,但是我想知道為什麼會有這種現象出現??這種現象是正常的嗎??我該怎麼修改才會ok??

謝謝大哥的回覆

justdo
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-08-30 22:06:15 IP:59.105.xxx.xxx 未訂閱
我把options底下的 code guard打開了,但還是沒有問題,你確定只有用這幾行code嗎?還有你用哪一個版本的BCB?有 patch 過嗎?
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-08-31 02:55:21 IP:61.229.xxx.xxx 未訂閱

應該是CodeGuard裡關於Delay Free所造成的。它會自動的幫你把Delocate後的資源mark起來,若稍後有試圖去使用,則會出現問題。 若把功能關了,自然就不會有因mark而造成的"錯誤"現象。

但是否真的有問題…不是很確定CodeGuard的報告是正確的,你若很在意問題,只能靠cpu 一步一步的trace才可能發現是真是假。有時候不用太在意它的report…


===================引 用 文 章===================

我是有把CodeGuard Validation的功能打開後才會有這樣的訊息出現,如果把CodeGuard Validation的功能關閉的話,就不會出現這樣的問題,但是我想知道為什麼會有這種現象出現??這種現象是正常的嗎??我該怎麼修改才會ok??

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
z858328y
一般會員


發表:7
回覆:9
積分:3
註冊:2006-08-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-09-01 11:48:50 IP:61.217.xxx.xxx 未訂閱

各位大哥:

如果是同時resize兩次呢???因為我發現,我是寫在formshow中,它會被執行兩次,不知是不是這種狀況造成的???(雖然我已經用指標的方式已經改好了,完全不會有問題,不過還是很在意vector的使用,因為不是很常用vector,還是想知道原因)

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-09-01 14:59:03 IP:61.229.xxx.xxx 未訂閱
聽你那麼說,應該沒錯,是你執行了二次的關係。因為第一次與第二次的時間很近,屬於在Delay Free內,所以會發生。放心吧,vector使用上沒什麼需要很注意的。至於CodeGuard上的問題通常都是來自於不夠完善的人為寫作所造成的。我看過不少程式設計人員都是答案出來就好,很少有像你這樣精細的,真是難得。但,時間就是金錢,要互相取捨,這是我多年來工作的經驗… :-)
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-09-08 14:56:47 IP:219.84.xxx.xxx 未訂閱

如果你的BCB版本是小於或等於6

強烈建議不開CodeGuard,這個功能有bugS...

系統時間:2024-05-13 12:15:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!