| #include <stdio.h> |
| #include <stdlib.h> |
| #include <new> |
| |
| int pass = 0; |
| |
| void * |
| operator new (size_t sz, const std::nothrow_t&) throw () |
| { |
| void *p; |
| pass++; |
| p = malloc(sz); |
| return p; |
| } |
| |
| void * |
| operator new (size_t sz) throw (std::bad_alloc) |
| { |
| void *p; |
| pass++; |
| p = malloc(sz); |
| return p; |
| } |
| |
| void |
| operator delete (void *ptr) throw () |
| { |
| pass++; |
| if (ptr) |
| free (ptr); |
| } |
| |
| class A |
| { |
| public: |
| A() {} |
| ~A() { } |
| int a; |
| int b; |
| }; |
| |
| |
| int |
| main (void) |
| { |
| A *bb = new A[10]; |
| delete [] bb; |
| bb = new (std::nothrow) A [10]; |
| delete [] bb; |
| |
| if (pass == 4) |
| { |
| printf ("PASS\n"); |
| return 0; |
| } |
| else |
| { |
| printf ("FAIL\n"); |
| return 1; |
| } |
| } |