operator new (<new>)
Ayırma nesnelerinin bir dizisi için depolama alanı ayırmak için yeni bir ifade tarafından çağrılan işlev.
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( );
Parametreler
_Count
Array nesnesi için ayrılacak depolama bayt sayısı._Ptr
Döndürülen işaretçi.
Dönüş Değeri
En düşük bayt adresine yeni ayrılmış depolama için bir işaretçi.Veya_Ptr.
Notlar
İlk işlev çağıran bir new[] tahsis etmek için ifade _Count bayt depolama düzgün hizalanmış o boyuttaki herhangi bir dizi nesne temsil etmek için ya da daha küçük.Program, standart C++ Kitaplığı tarafından tanımlanan varsayılan sürüm değiştirir bu işlev imzası olan bir işlev tanımlayabilirsiniz.Gerekli aynı davranıştır Yeni işleç(size_t).Geri dönmek için varsayılan davranışı olan operator new(_Count).
İkinci işlev yerleşimi adlandırılır new[] tahsis etmek için ifade _Count bayt depolama yeterince hizalanan o boyuttaki herhangi bir dizi nesne temsil eder.Program, standart C++ Kitaplığı tarafından tanımlanan varsayılan sürüm değiştirir bu işlev imzası olan bir işlev tanımlayabilirsiniz.Geri dönmek için varsayılan davranıştır İşleçYeni(_Count) bu işlevi başarılı olursa. Aksi halde, boş bir işaretçi döndürür.
Üçüncü işlev yerleşimi adlandırılır new[] deyim, Yeni (args) TN.Burada, args tek bir nesne işaretçisi oluşur.İşlev _Ptr geri döndürür.
Tarafından ayrılan depolama alanı boşaltmak için operator new[], çağrı operatörü silmek [.
Oluşturma hakkında bilgi için yeni, bkz: nonthrowing davranışını veya Yeni ve işleçler Sil.
Örnek
// 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;
}
Örnek Çıktı
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
Gereksinimler
Başlık:<yeni>
Ad alanı: std