Compartilhar via


operador novo (CRT)

Aloca 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 escalar novos, em comparação com o vetor novo formulário (operador de [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.

Excluir operador libera a memória alocada com operator new.

Você pode configurar se o novo operador 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 novo biblioteca C++ padrão.

Requisitos

Rotina

Cabeçalho necessário

Novo

<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 formulário nonplacement escalar, 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, 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
}

A seguir mostra como usar a escalar, posicionamento, throw nenhuma forma 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;
}

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Alocação de memória