Sdílet prostřednictvím


operator new (<new>)

Funkce volána nový výraz k přidělení úložiště pro jednotlivé objekty.

void* operator new(
   std::size_t _Count
) throw(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ů, které přidělují úložiště.

  • _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 přidělit nový výraz _Count bajtů úložiště vhodně zarovnány představovat libovolný objekt s velikostí.Program můžete definovat alternativní funkci podpisem této funkce, která nahradí výchozí verze definované Standard C++ Library a tak je nahraditelný.

Požadované chování se vrátíte neprázdné ukazatel pouze v případě, že úložiště lze rozdělit podle požadavku.Každé takové rozdělení výnosů z jiných přidělené úložiště ukazatel do úložiště nesouvislý.Pořadí a contiguity úložiště přidělené následná volání není určena.Počáteční hodnota nezadané.Vrácený ukazatel odkazuje na začátku přidělené úložiště (nejnižší bajt adresy).Pokud je počet nulový, vrácená hodnota neporovnává rovna jinou hodnotu vrácenou funkcí.

Výchozí chování je provedení smyčky.Ve smyčce funkce nejprve pokusí přidělit požadované úložiště.Zda pokus zahrnuje volání malloc(size_t) není určena.Pokud je pokus úspěšný, vrátí funkce ukazatel přidělené úložiště.Jinak volá funkci určeným nový popisovač.Pokud volaná funkce vrátí, cyklus se opakuje.Smyčky ukončí pokus přidělit požadované úložiště je úspěšná nebo volaná funkce nevrací.

Požadované chování nový popisovač je provést jednu z následujících operací:

  • Proveďte další úložiště k dispozici pro přidělení a vraťte.

  • Call either abort or exit(int).

  • Vyvoláním objekt typu bad_alloc.

Výchozí chování nový popisovač , je vyvolána objekt typu bad_alloc.Ukazatel s hodnotou null označí výchozí pro nové zpracování.

Pořadí a skladování přidělené následná volání contiguity operator new(size_t) nezadané, jsou uloženy počáteční hodnoty.

Druhá funkce je volána umístění nového výrazu přidělit _Count bajtů úložiště vhodně zarovnány představovat libovolný objekt s velikostí.Program můžete definovat alternativní funkci podpisem této funkce, která nahradí výchozí verze definované Standard C++ Library a tak je nahraditelný.

Výchozí chování je vrátíte operator new(_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í nové výraz formuláře nové (args) T.Zde args se skládá z jednoho objektu ukazatel.To může být užitečné pro vytváření objektu na známou adresu.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_new.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;
   delete fPtr;

   // The second form of new delete
   MyClass* fPtr2 = new( nothrow ) MyClass;
   delete fPtr2;

   // The third form of new delete
   char x[sizeof( MyClass )];
   MyClass* fPtr3 = new( &x[0] ) MyClass;
   fPtr3 -> ~MyClass();
   cout << "The address of x[0] is : " << ( void* )&x[0] << endl;
}

Příklad výstupu

Construction MyClass.000B3F30
Destructing MyClass.000B3F30
Construction MyClass.000B3F30
Destructing MyClass.000B3F30
Construction MyClass.0023FC60
Destructing MyClass.0023FC60
The address of x[0] is : 0023FC60

Požadavky

Záhlaví: <new>

Obor názvů: std

Viz také

Referenční dokumentace

new operator (STL Samples)

nothrow_t Structure

operator delete (<new>)