關於delete和delete 的區別

2022-05-19 06:49:04 字數 1115 閱讀 8923

在c++動態記憶體分配中我們常用到new和delete兩種操作,new用來申請記憶體,delete用來釋放記憶體。那麼問題來了,我們應該用delete來釋放記憶體還是用delete來釋放記憶體呢?

為了得到答案我做了一下實驗。(注:一下實驗在使用delete和delete得到的結果是一樣的,不重複po圖)

在這裡,我先為list申請了記憶體空間,並且指定list[5] = 5;用於後面判斷記憶體是否已經釋放,事實證明記憶體確實釋放了,其中儲存的5已經被釋放,而輸出乙個奇怪的數字。

但是我覺得不夠嚴謹,於是

我宣告乙個引用變數a來訪問原來list[5]的位址,確保不是list的位址發生變化而導致list[5]的值發生了變化,事實證明記憶體確實釋放了。

然後我發現了乙個問題,那就是每次輸出的那個奇怪的數字都是一樣的,於是我想list[5]的位址是不是也沒變?

於是我又做了乙個實驗

我的天,釋放記憶體後居然還能賦值?!我自己都不相信了,於是我開啟vs

也就是說delete以後list實際上也不存在了,這是dev編譯器與vs編譯器的差異

最後結論是delete以後記憶體釋放了,指向的位址也變了,不能再對原來的變數賦值。

還有delete和new搭配著用最好,new搭配delete,new搭配delete。(類物件陣列一定要用delete,基本資料型別兩者均可,但最好搭配使用)

關於delete 和 delete 二

3.下面我們來看看上面提到的4位元組是幹什麼用的。int main 執行結果 adress after malloc 0x804a008 size 104 a a adress after new 0x804a00c number of a at 0x804a008 100 size of a at...

關於delete 和delete的區別

自己也有和lz同樣的疑惑,於c 屆還是小白一枚啊。問題 看高質量c 程式設計的時候有個地方沒看懂,就是在string的析構函式中釋放m data時用delete m data,但後面跟著有個注釋 由於m data 是內部資料型別,也可以寫成 delete m data delete m data不是...

delete和delete 的區別

剛才在寫一段例子程式的時候,發現對於乙個指標型別的陣列t p,delete p和delete p的效果一樣。看了一下c primer和c programming language都沒有找到解釋,於是在網路上搜尋一下,發現了很好的解釋。整理一下 c 告訴我們在 用 new 分配的單個物件的記憶體空間的...