c 定義指標 delete

2021-08-21 19:40:06 字數 447 閱讀 9646

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就成了 野指標 在記憶體裡亂指一通。如果在定...