C C new的幾種用法

2021-06-28 10:11:39 字數 1162 閱讀 6321

new expression

這是最常見的一種用法,例如:

class

a  ;  

a* array = new

a[101];  

全域性的operator new 這是

c++標準庫為程式設計師準備的乙個預設操作符函式,返回乙個物件記憶體,但是不做物件的構造,它的作用和

malloc

類似,但是它可以丟擲異常,預設的是

bad_alloc

,例如:

a* array = (a*) ::operator 

new( 

sizeof

(a) * 101 );  

物件的operator new

這是使用者物件中自己定義的

operator new

,可以覆蓋全域性的函式operator new呼叫。在物件中的成員函式可以做任何事情,甚至可以只列印資訊而不分配記憶體。例如:

class

a    

};  

placement new

placement 

new的作用就是:建立物件(呼叫該類的建構函式)但是不分配記憶體,而是在已有的記憶體塊上面建立物件。用於需要反覆建立並刪除的物件上,可以降低分配釋放記憶體的效能消耗。

用法是傳遞給

new乙個分配好的指標和建構函式。例如:

size_t

sz =  

sizeof

( a );  

a* ptr = (a*) malloc( sz );  

new(ptr) a();  

// 只建立乙個a物件

a* ptr2 = (a*) malloc( sz * 100 );  

new(ptr2) a[100];  

// 從ptr2開始,連續建立100個a物件

使用者是無法主動呼叫建構函式的,所以需要借助

placement new

,但是使用者可以主動呼叫析構函式,所以用完這些物件後,呼叫析構函式,然後用對應分配記憶體的方法去釋放記憶體。

這裡只是示意**,事實上

malloc

並不一定比

operatornew

節省多少時間,用

placement new

常常是為了考慮效能,所以會配合記憶體池一起使用。

Intent的幾種用法

returnit new intent intent.action delete,uninstalluri install apk uri installuri uri.fromparts package null returnit new intent intent.action package ...

php curl的幾種用法

1.php curl的預設呼叫方法,get方式訪問url curl setopt ch,curlopt httpheader,header 設定http頭 curl setopt ch,curlopt url,url curl setopt ch,curlopt useragent,user age...

Intent的幾種用法

intent 應該算是android中特有的東西。你可以在intent中指定程式 要執行的動作 比如 view,edit,dial 以及程式執行到該動作時所需要的資料。都指定好後,只要呼叫startactivity android系統會自動尋找最符合你指定要求的應用 程式,並執行該程式。下面列出幾種...