1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <new> 4 5 int pass = 0; 6 7 void * 8 operator new (size_t sz, const std::nothrow_t&) throw () 9 { 10 void *p; 11 pass++; 12 p = malloc(sz); 13 return p; 14 } 15 16 void * 17 operator new (size_t sz) throw (std::bad_alloc) 18 { 19 void *p; 20 pass++; 21 p = malloc(sz); 22 return p; 23 } 24 25 void 26 operator delete (void *ptr) throw () 27 { 28 pass++; 29 if (ptr) 30 free (ptr); 31 } 32 33 class A 34 { 35 public: 36 A() {} 37 ~A() { } 38 int a; 39 int b; 40 }; 41 42 43 int 44 main (void) 45 { 46 A *bb = new A[10]; 47 delete [] bb; 48 bb = new (std::nothrow) A [10]; 49 delete [] bb; 50 51 if (pass == 4) 52 { 53 printf ("PASS\n"); 54 return 0; 55 } 56 else 57 { 58 printf ("FAIL\n"); 59 return 1; 60 } 61 } 62