通常,我們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...