Udostępnij za pośrednictwem


operator new (CRT)

Przydziela bloku pamięci ze sterty

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();

Parametry

  • Licznik
    Rozmiar alokacji.

  • obiekt
    Wskaźnik do bloku pamięci, w którym obiekt zostanie utworzony.

Wartość zwracana

Wskaźnik myszy do najniższej bajtowy adres nowo zaalokowanego składowania.

Uwagi

Ta forma operator new jest znany jako skalarnej nowe, w przeciwieństwie do nowego formularza vector (operatora new [).

W pierwszym formularzu tego operatora jest znany jako formularza nonplacement.Drugi formularz tego operatora jest znany jako formularz położenie i trzecia forma tego operatora jest nonthrowing, formularz położenie.

W pierwszym formularzu operator jest definiowana przez kompilator i nie wymaga new.h, które mają zostać uwzględnione w programie.

operator delete zwalnia pamięć przydzielona z operator new.

Można określić, czy operator new zwraca wartość null lub zgłasza wyjątek w przypadku awarii.Zobacz nowych i usunąć Operatorzy Aby uzyskać więcej informacji.

Z wyjątkiem rzuca rzuca nr zachowanie CRT lub operator new zachowuje się jak operator new w standardowa biblioteka języka C++.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

Nowy

<new.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

Następujące pokazuje, jak korzystać z formy skalarne, nonplacement operator new.

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

Następujące pokazuje, jak korzystać z formy skalarne, położenie 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
}

Następujące przedstawiono sposób użycia skalarnej, położenie, rzut nr postaci 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;
}

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Alokacja pamięci