Compartilhar via


operador novo (CRT)

Alocar 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 vetor de novo, em contraste com o novo formulário escalar (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 excluir [ libera a memória alocada com o novo operador.

Você pode configurar se operator new[] 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 [] de novo operador na biblioteca C++ padrão.

Requisitos

Rotina

Cabeçalho necessário

new[]

<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 o vetor, a forma 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;
}

A seguir mostra como usar o vetor, a forma de colocação 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, o posicionamento, a forma não-throw 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;
}

Consulte também

Referência

Alocação de memória