次の方法で共有


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();

パラメーター

  • count
    割り当てのサイズ。

  • object
    オブジェクトが作成されたメモリ ブロックへのポインター。

戻り値

新しく割り当てられたストレージの最下位バイト アドレスへのポインター。

解説

operator new のこのフォームはスカラー new フォーム (新しい演算子) とは対照的に、新しいベクターと呼ばれます。

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

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

[]演算子の削除 は 新しい演算子で割り当てられたメモリを解放します。

operator new[] が null を返すか、またはエラーが発生した場合は例外をスローするかどうかを設定できます。 詳細については、「new および delete 演算子」を参照してください。

スローするか、非スローする動作を除き、CRT operator new は、標準 C++ ライブラリの 新しい演算子[] と同様に動作します。

必要条件

ルーチン

必須ヘッダー

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 newの非スローのフォームを使用する方法を示します。

// 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;
}

参照

関連項目

メモリ割り当て