New演算子
C++のnew演算子とnew[]演算子は、まず、同名の演算子関数(後述)で記憶域を確保し、次にコンストラクタを呼んでインスタンスの初期化を行う。C++のnew演算子という名称は、Simulaの同名の演算子に由来する。
配置new (プレースメントnew, placement new) は、new演算子からnew演算子関数へ引数を与えられる機能である。当初、インスタンスを特定のメモリアドレスに「配置」するための機能ということで配置newと命名された。後に配置に限らず様々な使い道に応用できることが明らかとなったものの、今でも慣習的に配置newと呼ばれる。
例えばヘッダ<new>には、通常のnew、new[]演算子関数のほか、次のようなnew、new[]演算子関数が定義されている (X3014 18.4)。
上の2つは引数に与えられたポインタをそのままnew演算子関数の戻り値とするもので、当初の配置newの目論見どおり指定したメモリアドレスにオブジェクトを配置するために使用できる。
下の2つは記憶域が確保できなかったときに、例外を投げない代わりにヌルポインタを返すnewである(なお、newハンドラは呼ばれる)。