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.