operator 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的是新的向量表單,與新的純量表單(新運算子)。
第一種形式的運算子稱為無放置 (nonplacement) 形式。 這個運算子的第二分表單稱為placement 表單,而這個運算子第三種形式是 nonthrowing,placement表單。
運算子的第一個形式是由編譯器定義的,而且不需要 new.h 包括在您的程式中。
operator delete[] 新運算子配置的可用記憶體。
您可以設定**operator new[]**的傳回值為 NULL 或在失敗時擲回的例外狀況。 如需詳細資訊,請參閱新的 新增與移除運算子 。
加上了擲回的或無擲回例外的行為後, CRT **operator new ** 則與在 Standard C++ 程式庫中的operator new[]行為相同。
需求
常式 |
必要的標頭 |
---|---|
new[] |
<new.h> |
如需其他相容性資訊,請參閱<簡介>中的相容性。
程式庫
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;
}