C new與delete以及空指標

2021-07-11 05:44:07 字數 726 閱讀 3304

1、指標的new操作:

void main()

輸出為:

0x00431bf0

4分別為分配的空間位址和位址內存放的值。

如果寫為:

void main()

輸出為:4

程式的意思就是將0x00431bf0記憶體位址開始的4個byte的塊取出轉換為int型別輸出,即直接讀取記憶體。

2、指標的delete操作:

指標在delete的時候,會將指標指向的記憶體區域釋放掉,而指標同記憶體區域的聯絡並沒有被切斷,仍然會只想原來指向的記憶體區域。如:

void main()

程式輸出:

0x00431bf0

40x00431bf0

-572662307

可以看到p前後指向的位址是相同的,而指向位址的記憶體區域被釋放。此時,p所指向的值是不確定的(可能指向重要系統記憶體單元)。

所以,在deletep後,切記要令p=null;這樣才能真正完成delete操作。

3、空指標:

空指標指向的記憶體區域為記憶體的首位址,是不可讀寫的區域,即空指標不提供操作。刪除空指標是安全的(因為它什麼也沒做)。所以,在寫建構函式,

賦值操作符,或其他成員函式時,類的每個指標成員要麼指向有效的記憶體,要麼就指向空,那在你的析構函式裡你就可以只用簡單地delete 掉他們,而不用

擔心他們是不是被new 過。如:

void main() //輸出0x00000000

Delete與Truncate以及Drop的區別

相同點 truncate和不帶where子句的delete,以及drop都會刪除表內的資料 不同點 1.truncate和 delete只刪除資料不刪除表的結構 定義 drop語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的儲存過程 函式將保...

TRUNCATE的用法,以及與delete的對比

1.truncate命令用法 truncate table 表名 eg truncate table user 刪除user表中所有的資料 2.truncate與delete的比較 truncate與不帶引數的delete語句的功能是一樣的,都是刪除表中所有的行。但是truncate比delete速...

new與delete函式使用方法以及注意事項

new 與delete是c 預定的操作符,它們一般需要配套使用。new用於從堆記憶體申請一塊空間,一般動態用於動態申請記憶體空間,即根據程式需要,申請一定長度的空間,而delete則是將new申請的空間釋放。new 有以下的三種格式申請記憶體空間 new 資料型別 new 資料型別 初始值 new ...