diff --git a/trunk/research/frame/bad_alloc0.cpp b/trunk/research/frame/bad_alloc0.cpp new file mode 100644 index 000000000..e4002e200 --- /dev/null +++ b/trunk/research/frame/bad_alloc0.cpp @@ -0,0 +1,11 @@ +/* +ulimit -S -v 204800 +g++ -g -O0 bad_alloc0.cpp -o bad_alloc && ./bad_alloc +*/ +#include +int main(){ + char* p1 = new char[193000 * 1024]; // huge allocation + char* p0 = new char[100 * 1024]; // small allocation + printf("OK\n"); +} + diff --git a/trunk/research/frame/bad_alloc1.cpp b/trunk/research/frame/bad_alloc1.cpp new file mode 100644 index 000000000..c14326a34 --- /dev/null +++ b/trunk/research/frame/bad_alloc1.cpp @@ -0,0 +1,17 @@ +/* +ulimit -S -v 204800 +g++ -g -O0 bad_alloc1.cpp -o bad_alloc && ./bad_alloc +*/ +#include +#include +void handler() { + printf("Memory allocate failed\n"); + std::set_new_handler(NULL); // New will try to alloc again, then abort. +} +int main(){ + std::set_new_handler(handler); + char* p1 = new char[193000 * 1024]; // huge allocation + char* p0 = new char[100 * 1024]; // small allocation + printf("OK\n"); +} +