精華區beta Programming 關於我們 聯絡資訊
> : 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, 就一定要加上 [] 決不要有例外. 四眼的王蟲