#include <list> /* required, to expose allocator */
#include <stdexcept>
#include <stdio.h>
using namespace std;
struct BigStruct
{
char _data[4096];
};
void bad_alloc_test()
{
typedef allocator<BigStruct> BigStructAllocType;
BigStructAllocType bigStructAlloc;
try {
//Lets try to allocate almost 4096 Go (on most of the platforms) of memory:
BigStructAllocType::pointer pbigStruct = bigStructAlloc.allocate(1024 * 1024 * 1024);
// CPPUNIT_ASSERT( pbigStruct != 0 && "Allocation failed but no exception thrown" );
}
catch (bad_alloc const&) {
printf( "Ok\n" );
}
catch (...) {
//We shouldn't be there:
// CPPUNIT_ASSERT( false && "Not bad_alloc exception thrown." );
}
}
void bad_alloc_test1()
{
try {
allocator<BigStruct> all;
BigStruct *bs = all.allocate(1024*1024*1024);
// throw bad_alloc();
}
catch ( bad_alloc const & ) {
printf( "I am here\n" );
}
catch ( ... ) {
}
}
int main()
{
bad_alloc_test();
#if 0
try {
throw bad_alloc();
}
catch ( bad_alloc& ) {
}
catch ( ... ) {
}
#endif
return 0;
}