Home | History | Annotate | Download | only in compiler
      1 #include <list> /* required, to expose allocator */
      2 #include <stdexcept>
      3 #include <stdio.h>
      4 
      5 using namespace std;
      6 
      7 struct BigStruct
      8 {
      9   char _data[4096];
     10 };
     11 
     12 void bad_alloc_test()
     13 {
     14   typedef allocator<BigStruct> BigStructAllocType;
     15   BigStructAllocType bigStructAlloc;
     16 
     17   try {
     18     //Lets try to allocate almost 4096 Go (on most of the platforms) of memory:
     19     BigStructAllocType::pointer pbigStruct = bigStructAlloc.allocate(1024 * 1024 * 1024);
     20 
     21     // CPPUNIT_ASSERT( pbigStruct != 0 && "Allocation failed but no exception thrown" );
     22   }
     23   catch (bad_alloc const&) {
     24     printf( "Ok\n" );
     25   }
     26   catch (...) {
     27     //We shouldn't be there:
     28     // CPPUNIT_ASSERT( false && "Not bad_alloc exception thrown." );
     29   }
     30 }
     31 
     32 void bad_alloc_test1()
     33 {
     34   try {
     35     allocator<BigStruct> all;
     36     BigStruct *bs = all.allocate(1024*1024*1024);
     37 
     38     // throw bad_alloc();
     39   }
     40   catch ( bad_alloc const & ) {
     41     printf( "I am here\n" );
     42   }
     43   catch ( ... ) {
     44   }
     45 }
     46 
     47 int main()
     48 {
     49   bad_alloc_test();
     50 #if 0
     51   try {
     52     throw bad_alloc();
     53   }
     54   catch ( bad_alloc& ) {
     55   }
     56   catch ( ... ) {
     57   }
     58 #endif
     59   return 0;
     60 }
     61