новый оператор (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).
Первая форма данного оператора, как форма nonplacement.Второй формой этого оператора, как форма размещения и третья форма данного оператора nonthrowing форма размещения.
Первая форма оператора определяется компилятором и не требует new.h включать в программе.
удаление операторов [] освобождает память, выделенную с помощью оператора new.
Можно настроить ли operator new[] возвращает значение null или создает исключение при сбое.См. Новые и удаление операторов для получения дополнительных сведений.
За исключением создание или никак-бросая расширения функциональности, CRT operator new ведет себя следующим образом новый оператор [] в стандартной библиотеке C++.
Требования
Процедура |
Обязательный заголовок |
---|---|
new[] |
<new.h> |
Дополнительные сведения о совместимости см. Совместимость во введении.
Библиотеки
Все версии Библиотеки времени выполнения C.
Пример
В следующем примере показано использование вектор, форму nonplacement operator new.
// 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;
}