new 演算子 (CRT)
ヒープからメモリ ブロックを割り当てます
void *__cdecl operator new(
size_t count
);
void *__cdecl operator new(
size_t count,
void * object
) throw();
void *__cdecl operator new(
size_t count,
const std::nothrow_t&
) throw();
パラメーター
カウント
割り当てサイズ。object
オブジェクトが作成されたメモリ ブロックへのポインター。
戻り値
新たに割り当てられるストレージの最下位バイト アドレスへのポインター。
解説
operator new ではベクターの新しい 新しい operator [] フォーム () とは対照的に新しいスカラーと呼びます。
この演算子は nonplacement の最初のフォームと呼ばれます。この演算子の 2 番目の形式は配置のフォームと呼ばれこの演算子の 3 番目の形式は nonthrowing の配置の形式です。
演算子の最初の形式はコンパイラによって定義されnew.h をプログラムに含まれる必要がありません。
operator newoperator delete で割り当てられたメモリを解放します。
新しい演算子かどうかの値を設定して null の場合は例外をスローします。詳細については新しいおよび削除の操作 を参照してください。
スローまたは非スロー動作を除きCRT operator new は標準 C++ ライブラリの new 演算子 のように動作します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
new |
<new.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのバージョン。
使用例
次の例はスカラー operator new の nonplacement 形式を使用する方法を示します。
// crt_new1.cpp
#include <stdio.h>
int main() {
int * i = new int(6);
printf("%d\n", *i);
delete i;
}
次の例はスカラー operator new の配置のフォームを使用する方法を示します。
// crt_new2.cpp
#include <stdio.h>
#include <new.h>
int main() {
int * i = new int(12);
printf("*i = %d\n", *i);
// initialize existing memory (i) with, in this case, int(7)
int * j = new(i) int(7); // placement new
printf("*j = %d\n", *j);
printf("*i = %d\n", *i);
delete i; // or, could have deleted j
}
次に示すのはスカラー配置operator newthrow フォームを使用する方法を示します。
// crt_new3.cpp
#include <stdio.h>
#include <new.h>
int main() {
// allocates memory, initialize (8) and if call fails, new returns null
int * k = new(std::nothrow) int(8); // placement new
printf("%d\n", *k);
delete k;
}
同等の .NET Framework 関数
該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。