Compartilhar via


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 novo escalar, em contraste com o novo formulário de vetoroperador 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 é nonthrowing, formulário 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 operator new.

Você pode configurar se retorna nulo do operador novo 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

novo

<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 escalar, formulário de nonplacement de operator new.

// crt_new1.cpp
#include <stdio.h>
int main() {
   int * i = new int(6);
   printf("%d\n", *i);
   delete i;
}

O exemplo a seguir mostra como usar o escalar, formulário de posicionamento de 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
}

O exemplo a seguir mostra como usar a escalar, posição, formulário de não geram 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 padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.

Consulte também

Referência

Alocação de memória