eh.cc

来自「stl的源码」· CC 代码 · 共 61 行

CC
61
字号
#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;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?