> : void CEmulEditorView::On_HELP_SEND_FILE(WPARAM wParam, LPARAM lParam)
> : {
> : CString temp = (char *) wParam;
> : delete (char *) wParam;
> : .....
> : }
> : 傳送端和接收端屬於不同thread, 我所遇到的問題是 當兩個thread
> : 機乎同時sendmessage時,在第二次的delete (char *) wParam;
> : 會出現DAMAGE : after Normal block(#5636) at 0x00FB7260
> : 的error而debug視窗出現的是memory check error at 0x00FB7280 = 0x2D,
> : should be 0xFD...請問為什麼會這樣呢?~~我的用法錯了嗎??有比較
> : 好的替代法可以教教我嗎???thx..:)...
注意 delete 的用法:
char *temp = new char[30];
delete[] temp;
^^
> 你的寫法是win3.1時代的寫法, 現在win95由於擁有多執行緒,
> 所以各個process的記憶體空間位置並不相容, 也就是說A執行緒的XX位置與
> B執行緒的XX記憶體位置雖然位置相同, 但是其實根本不同, 我很懷疑
> 你以上程式的正確性為何, 應該字串傳不過去吧.....
> 建議你改成DDE或是剪貼簿..等等的寫法才會正確......
是的, 不過如果 thread 都是同一 process 建立的, 應該是不會有
問題才對.
如果是不同的 process 中的 thread, 則就要使用 IPC 了, 其中
WM_COPYDATA 是最簡單的一種.
--
☆ [Origin:椰林風情] [From: mach09.csie.ntu.edu.tw] [Login: **] [Post: 3]
> -------------------------------------------------------------------------- <
發信人: snoky.bbs@redbbs.cc.ntut.edu.tw (人間失格), 看板: Programming
標 題: Re: [VC]在SendMessage()中傳送字串的參數....
發信站: 臺北科技大學紅樓資訊站 (Thu Jan 21 00:30:57 1999)
轉信站: Ptt!news.ntu!ctu-gate!news.nctu!ccnews.cc.ntut!redbbs
【 在 EightCloud.bbs@csie.nctu.edu.tw (嵐雲) 的大作中提到: 】
: ==> 在 nb.bbs@bbs.ntu.edu.tw (nobody) 的文章中提到:
: : 注意 delete 的用法:
: : char *temp = new char[30];
: : delete[] temp;
: : ^^
: 沒錯, 標準上, 是說 array free 要用 [],
: 問題是在沒有 destructor 情況下, 有沒有 [], 有差嗎?
: [] 的做用在那?
加上 [] 是讓程式呼叫陣列中每一元素的解構子,如果沒有 destructor
的話沒加 [] 基本上是無所謂。但聰明人大多不會因為這樣就省略掉這個
[] ....
※ 來源:台北科技大學紅樓資訊站 redbbs.cc.ntut.edu.tw‧[FROM: ppp7258.cc.ntut.edu.]
> -------------------------------------------------------------------------- <
發信人: dyliu@tc.silkera.net (四眼的王蟲), 看板: Programming
標 題: Re: [VC]在SendMessage()中傳送字串的參數....
發信站: New Silkera Network (Thu Jan 21 20:38:28 1999)
轉信站: Ptt!news.ntu!feeder.seed.net.tw!news9.tp.silkera.net!not-for-mail
On 20 Jan 1999 16:30:57 GMT, snoky.bbs@redbbs.cc.ntut.edu.tw
(人間失格) wrote:
>【 在 EightCloud.bbs@csie.nctu.edu.tw (嵐雲) 的大作中提到: 】
>: ==> 在 nb.bbs@bbs.ntu.edu.tw (nobody) 的文章中提到:
>: : 注意 delete 的用法:
>: : char *temp = new char[30];
>: : delete[] temp;
>: : ^^
>: 沒錯, 標準上, 是說 array free 要用 [],
>: 問題是在沒有 destructor 情況下, 有沒有 [], 有差嗎?
>: [] 的做用在那?
>
> 加上 [] 是讓程式呼叫陣列中每一元素的解構子,如果沒有 destructor
> 的話沒加 [] 基本上是無所謂。但聰明人大多不會因為這樣就省略掉這個
> [] ....
依照 C++ Standard 的規定 delete一個 array 卻不用 delete [] 的方式
來釋放記憶體則結果是 undefined, 因此不能因為 object 沒有 destrctor
就省略掉 [], 只要是 delete 一個 array, 就一定要加上 [] 決不要有例外.
四眼的王蟲