C 中new三種用法

2021-06-18 14:39:06 字數 748 閱讀 3895

new operator(new的表示式):string *str = new string("abcde") 既分配記憶體也初始化物件

operator new(new的操作符):void *buff = operator new(sizeof(string))  類似於malloc 只分配空間不進行初始化

placement new:void *buff = operator new(sizeof(string)); buff = new(buff) string("abcde"); 對現有的buff空間進行初始化string型別的物件。

網易筆試題目:

c++中的new操作符通常完成兩個工作,分配記憶體及其呼叫相應的建構函式初始化

請問:1) 如何讓new操作符不分配記憶體,只呼叫建構函式?

2) 這樣的用法有什麼用?

[cpp]view plain

copy

使用定位放置

new#include // 必須 #include 這個,才能使用 "placement new"

#include "fred.h" // class fred 的宣告

void

somecode()  

作用為:對於需要反覆建立並刪除的物件,可以降低分配釋放記憶體的效能消耗  

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

C 中new的三種用法

c 中new的用法有三種 兩大類 其一是new operator new表示式 其二是operator new new操作符 new表示式比較常見,也最常用,例如 new操作符類似於c語言中的malloc,它只是負責申請記憶體,但不負責記憶體塊的初始化。例如 這是new的第二種用法。new的第三種用...

C 中NEW的三種用法

總結c 中三種關於 new 的使用方法 雖然有三種new的用法,但是分為兩大類也未嘗不可,那麼是哪兩類呢?其一是new operator,也叫new表示式 其二是operator new,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new表示式比較常見,也最常用,例如...

C 中new的三種用法

c 中new的用法有三種 兩大類 其一是new operator new表示式 其二是operator new new操作符 new表示式比較常見,也最常用,例如 string pstr new string abc 上面這個new表示式完成了兩件事情 申請記憶體和初始化物件 new操作符類似於c語...