delete 乙個NULL位址不會有任何問題

2021-06-20 12:43:46 字數 695 閱讀 9444

通常,我們new乙個物件,就要呼叫delete釋放物件。

如下:

int * ncount = new int;

delete ncount;      // 正確

如果:int * ncount;

delete ncount;      // 錯誤

因為ncount沒有指定內容,所以釋放會錯誤。

再如果:

int * ncount = null;

delete ncount;      // 正確,雖然沒有指向內容,但是已經宣告它是指向空的,所以釋放就不會有問題。

如下情況呢:

int * ncount = new int;

delete ncount;      // 正確

delete ncount;      // 錯誤,由於已經被釋放掉,再次刪除就會出錯。

改正:

int * ncount = new int;

delete ncount;      // 正確

ncount = null;     

delete ncount;      // 正確,指向為空不會有問題。

總結:對於指標,我們一定要賦初值;

int *ncount = null;

當刪除指標後,一定要將指標指向空,這是乙個良好習慣:

ncount = null;

因乙個delete引發的思考

請看這樣一段 class test test volatile int m value int main int argc,char ar 請問這段 如何輸出?可能會有人回答崩了呀,然而實驗多次,程式依舊堅挺,輸出也正確,為啥呢?我們最主要的問題就在於delete到底做了什麼,釋放記憶體導致是怎麼釋...

delete和truncate的乙個嚴重區別

建立測試表 create table test1 id int delete 會話一begin tran delete test1 insert test1 select 1 會話二insert test1 select 1 一先,二后,二瞬間完成,沒有發生阻塞 會話一begin tran trun...

SQL Server中NULL的乙個測試

我們都知道sql server中null是乙個很特殊的存在,因為null不會等於任何值,且null也不會不等於任何值。對於null我們只能使用is或is not關鍵字來進行比較。我們先來看看下面乙個sql查詢,由於null不會等於任何值,所以毫無疑問下面的查詢會返回0 select case whe...