c++無論何種資料,是否要delete關鍵看其空間是否使用new分配的。
1,函式衝定義的區域性變數指標,單純是乙個區域性變數是不用delete;
2,c++ 如果類中有乙個指標資料成員,而沒有用new, 析構函式也是不用delete的;
在類或函式中,int* ,char* 這些只要不是new的,也同樣不用釋放,系統會自動把他們佔的記憶體釋放掉,只有new的才會手動的去delete
原理:int*, char* ,這些定義是區域性變數,存在於棧上,比如int *p;p在棧上,而且p的值也是棧的乙個位址。
但是當int *p = new int ;這時候,p這個變數是在棧上的。但是p的值是乙個位址,這個位址是堆上的乙個位址。如果不delete p;那麼,這個位址會一直被占用著,不能被其他的物件所使用,所以我們用完這個位址,要把這個位址釋放掉。
因此棧的空間會自動釋放,而堆裡的空間必須手動釋放。
C 使用delete刪除指標
自 眾所周知,最開始我們用new來建立乙個指標,那麼等我們用完它之後,一定要用delete將該指標刪掉。但是,值得注意的是,難道就僅僅是刪除這個指標這麼簡單的麼?下面,我們用乙個程式來說明這個問題 include using namespace std int main 判斷了操作成功之後我們才能進...
C 指標delete後需要做
c 標準規定 delete空指標是合法的,沒有 所以我們一般在delete後就以為萬事大吉了,其實這是不安全的。我們在delete指標後賦值為null或0是個好習慣。對乙個非空指標delete後,若沒有賦null,若再次delete的話 有可能出現問題。如下 可以看出delete是釋放指標指向的記憶...
使用delete刪除指標
原文 用delete命令處理某個指標,說是把那個指標刪除了是不正確的。delete命令指示釋放了那個指標原本所指的那部分記憶體而已。被delete後的指標p的值 位址值 並非就是null,而是隨機值。也就是被delete後,如果不再加上一句p null,p就成了 野指標 在記憶體裡亂指一通。如果在定...