novo operador (CRT)
Aloca o bloco de memória do 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 tamanho da alocação.object
Um ponteiro para um bloco de memória na qual o objeto será criado.
Valor de retorno
Um ponteiro para o endereço do byte mais baixo do armazenamento recém-alocado.
Comentários
Essa forma de operator new é conhecido como escalar novo, em contraste com o novo formulário de vetor ([] de novo operador).
O primeiro formulário deste operador é conhecido como o formulário nonplacement.O segundo formulário deste operador é conhecido como o formulário de posicionamento e a terceira forma desse operador é a forma de colocação de nonthrowing.
O primeiro formulário do operador é definido pelo compilador e não exige que new.h a serem incluídos no seu programa.
operador delete libera a memória alocada com operator new.
Você pode configurar se o novo operador retorna null ou lança uma exceção em caso de falha.Consulte o novo e excluir os operadores de para obter mais informações.
Com exceção de lançar ou comportamento não-lançamento, a CRT operator new se comporta como novo operador na biblioteca C++ padrão.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
Novo |
<new.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Todas as versões da bibliotecas de tempo de execução c.
Exemplo
A seguir mostra como usar a forma escalar, nonplacement de operator new.
// crt_new1.cpp
#include <stdio.h>
int main() {
int * i = new int(6);
printf("%d\n", *i);
delete i;
}
A seguir mostra como usar a forma de colocação escalar, operator new.
// crt_new2.cpp
#include <stdio.h>
#include <new.h>
int main() {
int * i = new int(12);
printf("*i = %d\n", *i);
// initialize existing memory (i) with, in this case, int(7)
int * j = new(i) int(7); // placement new
printf("*j = %d\n", *j);
printf("*i = %d\n", *i);
delete i; // or, could have deleted j
}
A seguir mostra como usar o scalar, posicionamento, a forma não-throw de operator new.
// crt_new3.cpp
#include <stdio.h>
#include <new.h>
int main() {
// allocates memory, initialize (8) and if call fails, new returns null
int * k = new(std::nothrow) int(8); // placement new
printf("%d\n", *k);
delete k;
}
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.