Delphi FreeMem 內(nèi)存釋放
-
釋放了結(jié)構(gòu)指針dispose,釋放了內(nèi)存FreeMem,為什么內(nèi)存中還是有數(shù)據(jù)?如果用ZeroMemory代替FreeMem的話就成功對Delphi了解的不是很深,希望高手指點! 結(jié)構(gòu)指針定義如下 PTTest = ^TTest; TTest = record pac: PAnsiChar; end; var A: PTTest; p... 釋放了結(jié)構(gòu)指針dispose,釋放了內(nèi)存FreeMem,為什么內(nèi)存中還是有數(shù)據(jù)?如果用ZeroMemory代替FreeMem的話就成功對Delphi了解的不是很深,希望高手指點! 結(jié)構(gòu)指針定義如下 PTTest = ^TTest; TTest = record pac: PAnsiChar; end; var A: PTTest; procedure TForm2.FormCreate(Sender: TObject); var pp: PAnsiChar; begin pp := '123456789'; New(A); // 申請內(nèi)存空間 GetMem(A^.pac, 100); // 開辟100個內(nèi)存空間 CopyMemory(A^.pac, pp, 9); // 復(fù)制內(nèi)存 FreeMem(A^.pac); // 釋放內(nèi)存 Dispose(A); // 釋放引用 這個應(yīng)該是把A指向空地址吧? // 已經(jīng)釋放引用了,并且也 FreeMem 了 // 為什么還會彈出字符串呢? // 我希望的結(jié)果應(yīng)該是出錯,因為A這個結(jié)構(gòu)不存在了! ShowMessage(string(A^.pac));end; 展開
全部評論(4條)
-
- jmcwk0513 2013-03-27 00:00:00
- procedure TForm2.FormCreate((Sender: TObject); var pp: PAnsiChar; begin pp := '123456789'; New(A); // 申請內(nèi)存空間 GetMem(A^.pac, 100); // 開辟100個內(nèi)存空間 CopyMemory(A^.pac, pp, 9); // 復(fù)制內(nèi)存 FreeMem(A^.pac); // 釋放內(nèi)存 A := nil; //這樣才真正的讓A指向了空地址nil if Assigned(a) then //空值測試 把這行注釋掉一定報錯 ShowMessage(string(A^.pac));end;
-
贊(16)
回復(fù)(0)
-
- ANNA0210 2013-03-26 00:00:00
- 申請,指針指過去,記錄引用 釋放,減除引用,指針還在那里 沒有記錄可能就會被另一次申請去了, 并改了值,再訪問,不是想要的結(jié)果
-
贊(18)
回復(fù)(0)
-
- xdev63 2013-03-27 00:00:00
- 1、之所以不出錯,是因為操作系統(tǒng)目前還沒有使用這塊內(nèi)存,釋放和重新利用是兩個概念。 2、ZeroMemory與FreeMem根本就是兩個不同功能的函數(shù),一個清空內(nèi)存(填充0),一個釋放內(nèi)存(把資源還給操作系統(tǒng)),代替?zhèn)€球? 3、CopyMemory僅僅是復(fù)制了9個字符,字符串必須以0結(jié)尾,你也沒有置零。把 GetMem(A^.pac, 100)改成A^.pac := AllocMem(100)才對。
-
贊(15)
回復(fù)(0)
-
- Sy__永遠九姐姐 2018-05-10 12:40:53
- free掉了沒說不能再次使用,但是如果這樣子直接使用的話會出現(xiàn)意外的,因為你是在沒有重新申請的情況下直接使用的,而實際上這塊內(nèi)存的管理已經(jīng)不在App了 如果這個時候其他App或者其他進程/線程之類的能成功申請到這塊Memory,那么大家就要conflict了 所以在free掉之后,你需要給這個指針賦值為nil的;這個時候有人直接再去使用,那就是空指針了
-
贊(19)
回復(fù)(0)
熱門問答
- Delphi FreeMem 內(nèi)存釋放
- 釋放了結(jié)構(gòu)指針dispose,釋放了內(nèi)存FreeMem,為什么內(nèi)存中還是有數(shù)據(jù)?如果用ZeroMemory代替FreeMem的話就成功對Delphi了解的不是很深,希望高手指點! 結(jié)構(gòu)指針定義如下 PTTest = ^TTest; TTest = record pac: PAnsiChar; end; var A: PTTest; p... 釋放了結(jié)構(gòu)指針dispose,釋放了內(nèi)存FreeMem,為什么內(nèi)存中還是有數(shù)據(jù)?如果用ZeroMemory代替FreeMem的話就成功對Delphi了解的不是很深,希望高手指點! 結(jié)構(gòu)指針定義如下 PTTest = ^TTest; TTest = record pac: PAnsiChar; end; var A: PTTest; procedure TForm2.FormCreate(Sender: TObject); var pp: PAnsiChar; begin pp := '123456789'; New(A); // 申請內(nèi)存空間 GetMem(A^.pac, 100); // 開辟100個內(nèi)存空間 CopyMemory(A^.pac, pp, 9); // 復(fù)制內(nèi)存 FreeMem(A^.pac); // 釋放內(nèi)存 Dispose(A); // 釋放引用 這個應(yīng)該是把A指向空地址吧? // 已經(jīng)釋放引用了,并且也 FreeMem 了 // 為什么還會彈出字符串呢? // 我希望的結(jié)果應(yīng)該是出錯,因為A這個結(jié)構(gòu)不存在了! ShowMessage(string(A^.pac));end; 展開
- 怎么設(shè)置delphi計時器重新計時
- 在一個頁面內(nèi),按“重新開始”,計時器從0,重新開始計時,該怎么設(shè)置,怎么寫代碼?
- 內(nèi)存PCB是什么
- 內(nèi)存的常見故障
- win7原版系統(tǒng)8G物理內(nèi)存變成3G內(nèi)存
- 我前兩天一直用的2G內(nèi)存條系統(tǒng)顯示正常,今天買一條8G內(nèi)存插上去2G內(nèi)存拿下來,再開機就顯示Z多3G物理內(nèi)存,但是在電腦城那邊測試顯示是8G,我剛開始以為是系統(tǒng)問題所以重裝下Win7系統(tǒng),而且是原版的沒有精簡任何組件,C++ . NET DirectX9.0C等系統(tǒng)組件都安裝... 我前兩天一直用的2G內(nèi)存條系統(tǒng)顯示正常,今天買一條8G內(nèi)存插上去2G內(nèi)存拿下來,再開機就顯示Z多3G物理內(nèi)存,但是在電腦城那邊測試顯示是8G,我剛開始以為是系統(tǒng)問題所以重裝下Win7系統(tǒng),而且是原版的沒有精簡任何組件,C++ . NET DirectX9.0C等系統(tǒng)組件都安裝了,結(jié)果重裝完還是顯示3G物理內(nèi)存,是不是需要設(shè)置什么東西或者安裝什么補丁才能正確顯示? 展開
- 內(nèi)存芯片如何清空 內(nèi)存芯片針腳如何識別
- 本人MP3開機后不顯示畫面了。。也刷不上系統(tǒng),所以想清空內(nèi)存芯片!!!順便問問內(nèi)存芯片的針腳的用途。。有圖Z好謝謝拉!!!... 本人MP3開機后不顯示畫面了。。也刷不上系統(tǒng),所以想清空內(nèi)存芯片!!!順便問問內(nèi)存芯片的針腳的用途。。有圖Z好謝謝拉!!! 展開
- 釋放快門什么意思?
- 是指按下快門,還是松開快門?
- 求一個delphi制作的計時器 源代碼
- 郵箱 378909613@qq.com
- 內(nèi)存封裝的介紹
- 索尼dsc-t700怎么把內(nèi)存里的照片復(fù)制到內(nèi)存卡里
- Java編程的軟件需要很大內(nèi)存嗎,4G內(nèi)存夠不
- 內(nèi)存2G的電腦,內(nèi)存出現(xiàn)不足怎么辦?虛擬內(nèi)存應(yīng)該設(shè)置成多少?
- 索尼A77機身內(nèi)存是多少
- 6G內(nèi)存還需要虛擬內(nèi)存嗎?
- 我的系統(tǒng)是vista64位,可以完全利用6G內(nèi)存。我現(xiàn)在想問大家可不可以禁用虛擬內(nèi)存?如果禁用到底有沒有問題,謝謝... 我的系統(tǒng)是vista 64位,可以完全利用6G內(nèi)存。我現(xiàn)在想問大家可不可以禁用虛擬內(nèi)存?如果禁用到底有沒有問題,謝謝 展開
- 內(nèi)存, 虛擬內(nèi)存。RAM的區(qū)別
- 想知道內(nèi)存虛擬內(nèi)存RAM區(qū)別???還有他們之間是怎么的關(guān)系哇RAM隨機讀取存儲器是不是屬于內(nèi)存哇??那內(nèi)存就是RAM么??詳細回答下... 想知道 內(nèi)存 虛擬內(nèi)存 RAM 區(qū)別???還有他們之間是怎么的關(guān)系哇 RAM隨機讀取存儲器 是不是屬于內(nèi)存哇?? 那內(nèi)存就是RAM么?? 詳細回答下 展開
- ________是用硬盤空間模擬內(nèi)存。
- 如何使用Delphi編寫Modbus RTU CRC16的校驗碼
- 如何使用Delphi編寫Modbus RTU CRC16的校驗碼
- delphi 運行程序一個計時器提示‘ ~~~:沒有注冊類別 ’
- delphi 運行程序一個計時器提示‘ ~~~:沒有注冊類別 ’ ,問下是怎么回事?難道是COM組件調(diào)用失敗。。幫幫忙,謝謝!
- delphi通過什么組件與西門子S7 300通信??
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論