operator new[] (CRT)
Atribui o bloco de memória heap
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();
Parâmetros
count
O tamanho da alocação.objeto
Um ponteiro para um bloco de memória no qual o objeto será criado.
Valor de retorno
Um ponteiro para o mais baixo endereço de bytes de armazenamento recentemente alocado.
Comentários
Esse formulário de operator new é conhecido como o vetor nova, em contraste com o novo formulário escalar (operador novo).
O primeiro formulário desse operador é conhecido como o formulário de nonplacement. O segundo formulário desse operador é conhecido como o formulário de posicionamento e o terceiro formulário desse operador é a forma nonthrowing de posicionamento.
O primeiro formulário do operador é definido pelo compilador e não requer new.h ser incluído em seu programa.
a exclusão do operador [] libera memória alocada com o operador novo.
Você pode configurar se operator new[] retorna nulo ou lance uma exceção de falha. Consulte Operadores novos e exclusão para obter mais informações.
Com exceção do comportamento de reprodução ou de reprodução, o CRT operator new se comporta como operador novo [] na biblioteca padrão C++.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
new[] |
<new.h> |
Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.
Bibliotecas
Todas as versões das Bibliotecas em tempo de execução C.
Exemplo
O exemplo a seguir mostra como usar o vetor, formulário de nonplacement de 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;
}
O exemplo a seguir mostra como usar o vetor, formulário de posicionamento de 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
}
O exemplo a seguir mostra como usar o vetor, posição, formulário de não geram de 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;
}