Sdílet prostřednictvím


nový operátor (CRT)

Přidělí blok paměti z haldy

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

  • počet
    Velikost přidělení.

  • objekt
    Ukazatel na blok paměti, ve kterém bude objekt vytvořen.

Vrácená hodnota

Ukazatel na nejnižší adrese bajt nově přidělené skladování.

Poznámky

Tato forma operator new je označován jako skalární nové kontrastu k vektoru nový formulář ([] nový operátor).

První formulář tento operátor je známa jako nonplacement formuláře.Druhý formulář tento operátor je označován jako umístění formuláře a třetí formulář tento operátor je nonthrowing, umístění formuláře.

První formulář operátor je definované kompilátorem a new.h, které mají být zahrnuty v programu nevyžaduje.

operátor delete uvolní paměť přidělenou s operator new.

Můžete nakonfigurovat, zda nový operátor vrací hodnotu null nebo výjimku při selhání.Viz nové a odstranit operátory Další informace.

S výjimkou o vyvolání vyvolání č chování CRT nebo operator new se chová jako nový operátor v Standard C++ Library.

Požadavky

Rutina

Požadované záhlaví

Nový

<new.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

Knihovny

Všechny verze C Runtime knihovny.

Příklad

Následující ukazuje použití skalární, formě nonplacement operator new.

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

Následující ukazuje, jak použít tvar umístění skalární, 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
}

Následující ukazuje použití skalární, umístění, formě throw č 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;
}

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Přidělení paměti