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

new出来的元件是否需要delete?

尚未結案
yr012345
一般會員


發表:4
回覆:14
積分:3
註冊:2003-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-18 08:37:22 IP:211.98.xxx.xxx 未訂閱
有的人说,new出来的TMenuItem、TEdit等在程序完全退出后,占用的内存就完全释放了,不必delete,不知对不对?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-18 08:50:34 IP:203.73.xxx.xxx 未訂閱
yr012345 你好: (1)理論上是這樣子沒錯(生命週期),但實際上是如何,就不一定了 (2)因此~~建議還是養成良好的習慣,一個 new,對一個 delete --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-18 09:43:40 IP:211.22.xxx.xxx 未訂閱
在 BCB 上面運作 Windows 應用程式有一個特色,你所使用的VCL 元件,Borland 將其活耀的舞台都限定在Heap 上,並且 Linked_List 實作之。 換句話說,個人認為 Borland 基於以下原因 1.為了防止程式員因為存取記憶體不當,導致系統Crash。 2.做好記憶體管理,包括Garvage Collector。 有了上面的認識之後,針對你的問題: 1.如果你是由元件模板直接拖、拉、放,到你的Form裡面 只要你所寫的程式一但結束,記憶體都會得到釋放。 2.如果你是以指標來動態存取VCL 元件(new...delete...), BCB 還是會幫你做好記憶體回收管理,只是這不是個好習慣。 3.如果你是 char *pStr = new char[1000000]; 你並沒有 delete [] pStr; 程式Run個幾次,你的Windows就會怪怪的,因為你的RAM都被Memory leak吃掉了 直到你結束BCB,嚴重時甚至要將Windows 重新開機
yr012345
一般會員


發表:4
回覆:14
積分:3
註冊:2003-02-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-18 11:09:35 IP:211.98.xxx.xxx 未訂閱
非常感谢Raynorpao和BGman的回答.
yr012345
一般會員


發表:4
回覆:14
積分:3
註冊:2003-02-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-18 11:09:41 IP:211.98.xxx.xxx 未訂閱
非常感谢Raynorpao和BGman的回答.
系統時間:2024-04-29 6:39:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!