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

這做是否會做成記憶體缺口?

尚未結案
kitsam
一般會員


發表:13
回覆:11
積分:4
註冊:2005-02-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-13 15:14:38 IP:222.166.xxx.xxx 未訂閱
大家好,我看了一本書,它是這樣宣告字串的: void test() { char *c="Hello World"; } 我嘗試過用vc 來追蹤 *c 及 "Hello World" 兩個記憶位置,當程式離開test函數後,*c會自動被移除,但存放著"Hello World"的記憶還存在,那我要怎樣做,才能移除被"Hello World"佔用的記憶體? 我試過用delete c,但沒有效果。 謝謝。
liangnet
中階會員


發表:19
回覆:148
積分:83
註冊:2004-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-13 17:09:13 IP:218.170.xxx.xxx 未訂閱
應該是有被釋放掉記憶體吧! 但是被釋放掉的記憶體內容值還是會繼續保留,系統不會去清掉該記憶體的內容。
kitsam
一般會員


發表:13
回覆:11
積分:4
註冊:2005-02-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-13 17:35:55 IP:222.166.xxx.xxx 未訂閱
哦. 那我又有一個問題,我看書上寫: "每當建立一個變數,系統就會找一塊空的記憶體來存放",若記憶體中還有殘留值,那系統如何得知這塊記憶體是否為空? (以上問題可能有少許超出C 的範疇內,但小弟很想更深入了解c 中的指針機制)
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-13 18:01:46 IP:210.68.xxx.xxx 未訂閱
記憶體有殘留值 是因為沒有去清除他, 跟他是不是空的沒有關係. "每當建立一個變數,系統就會找一塊空的記憶體來存放" 空的記憶體 裡面很可能有之前留下的殘留值哦...
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-13 19:47:34 IP:211.22.xxx.xxx 未訂閱
記憶體的使用,概分三種: 1.區域變數(local variable):當程式進入該變數的有效範圍時,Compiler就會在堆疊上幫他找一塊記憶體放置使用,一旦離開後該記憶體位置的內容就會被註記無效(該變數不但無法存取了,變數內容也無意義)。 2.全域變數(global variable):當程式一開始時,就存在於記憶體,一直到程式結束後內容就會被註記無效。 3.指標變數:由使用者經由Compiler向作業系統配置一塊空間來儲存資料(此時指標的內容不能為NULL),到不使用時,再經由使用者由Compiler告訴作業系統那塊空間不使用了(此時指標的內容為NULL)。 因此記憶體內容有沒有意義(也就是你所謂的是否為空),純粹看引用的變數有沒有意義,變數是要自動歸還或者要使用者自行處理,而不是記憶體的內容為啥,因為記憶體是實體RAM,它會一直都在那裡的。 ----------------------------------------------
系統時間:2024-11-22 20:45:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!