1 // GROUPS passed scoping 2 // scoping file 3 // From: svkakkad@cs.utexas.edu (Sheetal V. Kakkad) 4 // Date: Tue, 5 Oct 93 12:38:49 -0500 5 // Subject: G++ 2.4.5 - global delete operator not called when using "::delete" 6 // Message-ID: <9310051738.AA14586@boogie.cs.utexas.edu> 7 8 #include <stdio.h> 9 #include <stddef.h> 10 #include <stdlib.h> 11 12 class foo 13 { 14 public: foo()15 foo () { ; } ~foo()16 ~foo () { ; } 17 void *operator new (size_t); 18 void operator delete (void *); 19 }; 20 new(size_t size)21void *foo::operator new (size_t size) 22 { 23 return malloc (size); 24 } 25 26 int overloaded_delete = 0; 27 delete(void * data)28void foo::operator delete (void *data) 29 { 30 free ((char *) data); 31 overloaded_delete++; 32 } 33 main()34int main () 35 { 36 foo *f = new foo; 37 foo *ff = ::new foo; 38 ::delete ff; // should call the default delete operator 39 delete f; 40 if (overloaded_delete == 1) 41 printf ("PASS\n"); 42 else 43 { printf ("FAIL\n"); return 1; } 44 } 45