operador novo [] (CRT)
Alocar o bloco de memória de 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
Contagem
O dimensionar da alocação de.object
Um ponteiro para um bloco de memória na qual o objeto será criado.
Valor de retorno
Um ponteiro para o endereço de byte mais baixo do armazenamento recém-alocado.
Comentários
Essa forma de operator new é conhecido sistema autônomo vetor de novo, em comparação com o escalar (formulário novooperador novo).
Primeiro formulário desse operador é conhecido sistema autônomo o formulário nonplacement.Da segunda forma desse operador é conhecida sistema autônomo o formulário de posicionamento e a terceira forma do operador de está na forma de colocação nonthrowing.
O primeiro formulário do operador é definido pelo compilador e não requer new.h a serem incluídos no seu programa.
operador excluir libera a memória alocada com o novo operador.
Você pode configurar se operator new[] Retorna nulo ou lança uma exceção em caso de falha. See O novo e excluir operadores para obter mais informações.
Com exceção do lançando ou lançando nenhum comportamento, a CRT operator new se comporta como operador de [novo biblioteca C++ padrão.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
new[] |
<new.h> |
Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.
Bibliotecas
Todas as versões do C em time de execução bibliotecas.
Exemplo
A seguir mostra como usar o vetor nonplacement formulário 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;
}
A seguir mostra como usar o vetor, posicionamento formulário 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
}
A seguir mostra como usar o vetor, posicionamento, throw nenhuma forma 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;
}