次の方法で共有


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 ではスカラー新しいフォーム new 演算子() とは対照的にベクターの new 演算子と呼ばれます。

この演算子は nonplacement の最初のフォームと呼ばれます。この演算子の 2 番目の形式は配置のフォームと呼ばれこの演算子の 3 番目の形式は nonthrowing 配置したものです。

演算子の最初の形式はコンパイラによって定義されnew.h をプログラムに含まれる必要がありません。

新しい演算子 operator delete [入力] で割り当てられたメモリを解放します。

operator new[] かどうかが null の設定またはエラーの例外をスローします。詳細については新しいおよび削除の操作 を参照してください。

スローまたは非スロー動作を除きCRT operator new は標準 C++ ライブラリの 新しい operator [] のように動作します。

必要条件

ルーチン

必須ヘッダー

new[]

<new.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

使用例

次の例はベクター operator new の nonplacement 形式を使用する方法を示します。

// crt_new4.cpp
#include <stdio.h>
int main() {
   int * k = new int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

次の例はベクター operator new の配置のフォームを使用する方法を示します。

// crt_new5.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * i = new int[10];
   i[0] = 21;
   printf("%d\n", i[0]);
   // initialize existing memory (i) with, in this case, int[[10]
   int * j = new(i) int[10];   // placement vector new
   printf("%d\n", j[0]);
   j[0] = 22;
   printf("%d\n", i[0]);
   delete [] i;   // or, could have deleted [] j 
}

次に示すのはベクター配置operator newthrow フォームを使用する方法を示します。

// crt_new6.cpp
#include <stdio.h>
#include <new.h>
int main() {
   int * k = new(std::nothrow) int[10];
   k[0] = 21;
   printf("%d\n", k[0]);
   delete [] k;
}

参照

関連項目

メモリ割り当て