臨睡前突然看到乙個問題,c++中 delete和delete 兩種運算子的區別?
帶著這個問題查了相關資料,並做了實驗。部分結果參考網上資料,感謝部落格:
漫步雲端c++告訴我們在**用 new 分配的單個物件的記憶體空間的時候用 delete,**用 new 分配的一組物件的記憶體空間的時候用 delete。
關於 new 和 delete,其中又分為兩種情況:(1) 為基本資料型別分配和**空間;(2) 為自定義型別分配和**空間。
/*
vs2010 win10 64bit
*/#include "stdafx.h"
#include
using
namespace
std;
class t
~t()
};int _tmain(int argc, _tchar* argv)
執行結果:
delete 和delete針對簡單型別的資料結構可以通用,如陣列,單一變數
e.g.
char *p5 = new char[20];
delete p5;
但是如果針對自定義型別的資料結構如類、結構體、string等型別在**空間時就需要根據申請時使用的new和new對應的操作了。在vs平台下,如果對結構體使用了new而釋放是對應了delete,執行時會報錯。在其他編譯環境下,未必會報錯,導致只釋放了頭指標指向的空間,其他空間依然存在,會造成記憶體洩露的結果。
C delete與delete 的區別
c 中對new申請的記憶體釋放方式有delete和delect兩種方式,那這兩者到底有哪些區別呢?可能你見過這樣的表述 用new分配記憶體,就用delect釋放記憶體 使用new分配記憶體,就用delete釋放記憶體。具體來講就是delect釋放new分配的單個物件指標指向的記憶體,delete釋放...
delete和delete 的區別
剛才在寫一段例子程式的時候,發現對於乙個指標型別的陣列t p,delete p和delete p的效果一樣。看了一下c primer和c programming language都沒有找到解釋,於是在網路上搜尋一下,發現了很好的解釋。整理一下 c 告訴我們在 用 new 分配的單個物件的記憶體空間的...
delete和delete 的區別
c 告訴我們在 用 new 分配的單個物件的記憶體空間的時候用 delete,用 new 分配的一組物件的記憶體空間的時候用 delete。樓主的這個問題提得很好。很多人注意到了這個問題,但是卻不清楚為什麼要這樣做,不這樣做行不行。關於 new 和 delete,其中又分為兩種情況 1 為基本資料型...