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 + -
显示快捷键?