ExitThread 會釋放記憶體嗎? |
尚未結案
|
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
|
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
引言: 如果我在一個thread函數中寫不會。因為ExitThread就是把thread踢出去啦。 你應把delete a寫在ExitThread之前。void MyThread() { int *a = new int[3]; ExitThread(0); delete a; }不知道a的記憶體會不會被釋放? 引言:不會! throw 後面的code不會執行。 你應該這樣寫:void MyThread() { int *b = new int[3]; throw 1; delete b; }不知道b的記憶體會不會被釋放? void MyThread() { int *b = new int[3]; try { throw 1; } catch(...) { delete b; } } 引言: 不知道要如何寫才能「安全」的離開這個函數?謝啦!1.請先搞清楚 --1. thread這個object以及它的運作。(詳見MSDN) --2. try 的作用與使用方式。(詳見MSDN) 2.請參考您之前提問過的問題: 【BCB】【問題】如何終止一個正在執行中的函數? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49946 【BCB】【問題】如何將 thread 終止? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50242 2篇都有提到如何安全終止thread(終止thread執行, 也就是離開函數)。 3. 請多多利用本站搜尋功能。 ------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- 發表人 - anpino 於 2004/05/31 17:45:10 |
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
謝謝anpino大大的指導,糾正我以前錯誤的觀念!
目前我的執行函數有點複雜,簡化如下:
bool Stop = false; void MyThread() { int *a = new int[3]; for (int i=0; i<100000; i) { fa(1); } delete a; } void fa(int aa) { if (Stop) ExitThread(1); ... } void ButtonStopClick() { Stop = true; }原則上沒有按下Stop按鈕,Thread會正常執行結束,而a也能被delete掉,但現在問題是若我中途停止它就會執行ExitThread離開thread,但就漏了delete a的動作了,不知道要如何才能解決這個問題...感激!!! PS. MyThread中的for迴圈是用來表示一個長串的程式,表示要執行一段時間,而非真的是迴圈,寫for是用來簡化程式。 |
anpino
版主 發表:31 回覆:477 積分:231 註冊:2003-01-02 發送簡訊給我 |
1)
將a改成全域變數:
bool Stop = false; int *a = NULL; void MyThread() { a = new int[3]; int i = 100000; while (i --) { fa(1); } } void fa(int aa) { if (Stop) { delete a; ExitThread(1); } ... } void ButtonStopClick() { Stop = true; }2) bool Stop = false; void MyThread() { int *a = new int[3]; int i = 100000; while (i --) { if (Stop) { delete a; ExitThread(1); } fa(1); } } void fa(int aa) { ... } void ButtonStopClick() { Stop = true; }------------------------------- 數學系是內功很強(邏輯/分析) 資工系是招式很多(程式技巧) 就像令狐沖VS東方不敗:D Anpinos Middle Earth http://anpino.hp.infoseek.co.jp/ ------------------------------- |
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
|
hornacek
一般會員 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |