new operator (STL Samples)
Nasıl kullanılacağı gösterilmiştir Yeni işleç in <new>.
void *operator new(
size_t n
)
void *operator new(
size_t n,
const nothrow&
)
void *operator new[](
size_t n
);
Notlar
Not
Prototip sınıfı/parametre adları üstbilgi dosyasında sürüm eşleşmiyor.Bazıları, okumayı kolaylaştırmak için değiştirildi.
İlk Yeni işleci bellek dener ve başarısız olursa, bir özel durum oluşturur. Yeni ikinci işleci türü nothrow ikinci bir parametre kabul eder. Bu parametre ayırma başarısız olursa, okuyor null dönmek ve bir özel durum yok olduğunu gösterir. Yeni üçüncü operatör için bir dizi türünde bellek ayırır ve başarısız olursa, bir özel durum oluşturur.
Örnek
// newop.cpp
// compile with: /EHsc
//
// Functions:
// void *operator new(size_t n)
// void *operator new(size_t n, const nothrow&)
// void *operator new[](size_t n);
#include <new>
#include <iostream>
using namespace std;
class BigClass {
public:
BigClass() {};
~BigClass(){}
#ifdef _WIN64
double BigArray[0x0fffffff];
#else
double BigArray[0x0fffffff];
#endif
};
int main() {
try {
BigClass * p = new BigClass;
}
catch( bad_alloc a) {
const char * temp = a.what();
cout << temp << endl;
cout << "Threw a bad_alloc exception" << endl;
}
BigClass * q = new(nothrow) BigClass;
if ( q == NULL )
cout << "Returned a NULL pointer" << endl;
try {
BigClass * r[3] = {new BigClass, new BigClass, new BigClass};
}
catch( bad_alloc a) {
const char * temp = a.what();
cout << temp << endl;
cout << "Threw a bad_alloc exception" << endl;
}
}
Örnek Çıktı
bad allocation
Threw a bad_alloc exception
Returned a NULL pointer
bad allocation
Threw a bad_alloc exception
Gereksinimler
Başlık: <new>