我的學習筆記之——new/delete

  在之前的轉帖中有詳細的介紹過new/delete和malloc/free之間的區別,這裏只是把我後來看書學到的一點關於new/delete的知識補充進來。函數

  new/delete是運算符,而不是函數,實際上,當使用new表達式時,發送了3個步驟:指針

  (1)首先該表達式調用名爲「operater new」的標準庫函數,分配足夠大的原始的未類型化的內存,以保存指定類型的一個對象;對象

  (2)接下來,運行該類型的一個構造函數,用指定初始化式構造對象;內存

  (3)最後,返回指向新分配並構造的對象的指針。構造函數

  注意:與其餘operator函數不一樣,operater new和operator delet沒有重載new或delete,咱們不能重定義new和delete表達式的行爲;可是,operator new和operator delete是能夠重載的。let

  當使用delete刪除動態分配的對象的時候,發生了兩個步驟:(如:delete p)new

  (1)首先對(p)指針指向的對象運行適當的析構函數;運算符

  (2)而後經過調用名爲operator delete的標準庫函數釋放該對象所用內存。opera

  也就是說,實際上malloc/free至關於operator new/operator delete的做用。delete

相關文章
相關標籤/搜索