c++ new 的幾個用法

  1. 在 c++ 裏 new 有三個用法。1) new xxx, 2) operator new( int size ), 3) placement new.

  2. 最常用的是 new xxx 例如 pstr = new string(“xxx”); 這種會調用 string 的構造函數,並需要通過 delete pstr 來析構。

    void* w = operator new(100);
    operator delete(w);
  1. void* operator new( size_t size ) 這是一個函數和 malloc 一樣。需要調用 operator delete( void* ) 作用與 free() 一樣來釋放內存。
  2. placement new 語法 
    char *p = new char[100];
    char *q = NULL;
    new (q) int;
    delete []p;

placement new 的主要用途就是可以反覆使用一塊已申請成功的內存空間。這樣可以避免申請失敗的徒勞,又可以避免使用後的釋放。 placement new 還會調用構造函數,但是因爲此內存不是你在 new 的時候分配的那麼就不應該 delete q 。
注意:它的內存釋放應該是 delete []p,而不是 delete q。q 只是使用了了這塊內存而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章