operator new (<new>)
Přidělení funkce volána nový výraz k přidělení úložiště pro pole objektů.
void *operator new[](
std::size_t _Count
)
throw(std::bad_alloc);
void *operator new[](
std::size_t _Count,
const std::nothrow_t&
) throw( );
void *operator new[](
std::size_t _Count,
void* _Ptr
) throw( );
Parametry
_Count
Počet bajtů úložiště přidělí pro objekt array._Ptr
Ukazatele, které mají být vráceny.
Vrácená hodnota
Ukazatel na nejnižší adrese bajt skladování nově přiděleno.Nebo_Ptr.
Poznámky
První funkce je volána new[] výraz přidělit _Count bajtů úložiště vhodně zarovnaný představují libovolný objekt array zadané velikosti nebo menší.Program můžete definovat funkci podpisem této funkce, která nahrazuje verzi výchozí definován Standard C++ Library.Požadované chování je stejný jako u nový operátor(size_t).Výchozí chování je vrátíte operator new(_Count).
Je druhá funkce volána stáže new[] výraz přidělit _Count bajtů úložiště vhodně zarovnány představovat libovolný objekt array zadané velikosti.Program můžete definovat funkci podpisem této funkce, která nahrazuje verzi výchozí definován Standard C++ Library.Výchozí chování je vrátíte operátornové(_Count) Pokud se podaří tuto funkci.V opačném případě vrátí ukazatel s hodnotou null.
Třetí funkce je volána umístění new[] výraz formuláře nové (args) tn.Zde args se skládá z jednoho objektu ukazatel.Funkce vrátí _Ptr.
Uvolnit přidělené úložiště operator new[], volání operátor delete [.
Informace o vyvolání nebo nonthrowing chování nové, viz nové a odstranit operátory.
Příklad
// new_op_alloc.cpp
// compile with: /EHsc
#include <new>
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass() {
cout << "Construction MyClass." << this << endl;
};
~MyClass() {
imember = 0; cout << "Destructing MyClass." << this << endl;
};
int imember;
};
int main() {
// The first form of new delete
MyClass* fPtr = new MyClass[2];
delete[ ] fPtr;
// The second form of new delete
char x[2 * sizeof( MyClass ) + sizeof(int)];
MyClass* fPtr2 = new( &x[0] ) MyClass[2];
fPtr2[1].~MyClass();
fPtr2[0].~MyClass();
cout << "The address of x[0] is : " << ( void* )&x[0] << endl;
// The third form of new delete
MyClass* fPtr3 = new( nothrow ) MyClass[2];
delete[ ] fPtr3;
}
Vzorový výstup
Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC
Construction MyClass.0012FED4
Construction MyClass.0012FED8
Destructing MyClass.0012FED8
Destructing MyClass.0012FED4
The address of x[0] is : 0012FED0
Construction MyClass.00311AEC
Construction MyClass.00311AF0
Destructing MyClass.00311AF0
Destructing MyClass.00311AEC
Požadavky
Záhlaví: <new>
Obor názvů: std