os/ossrv/genericopenlibs/cppstdlib/stl/test/compiler/eh.cc
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 //#include <list>
     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 }