Constructors and destructors print out the values of a_, b_, and c_.
Foo *pf = ::new Foo[5]; // operator new[] ::delete pf; // operator delete
Results: In Foo constructor: 0,0,0 In Foo constructor: 0,0,0 In Foo constructor: 0,0,0 In Foo constructor: 0,0,0 In Foo constructor: 0,0,0 In Foo destructor: 0,0,0 MSVC and Borland crash here. g++ doesn't crash.
MSVC 7.1Foo *pf = ::new Foo; // operator new ::delete [] pf; // operator delete[]
Borland (sometimes crashes at the end)In Foo constructor: 0,0,0
g++ (sometimes crashes at the end)In Foo constructor: 0,0,0 In Foo destructor: 0,0,49017 In Foo destructor: 1,0,0 In Foo destructor: 0,4466260,1 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,257,0 In Foo destructor: -1,0,0 In Foo destructor: 0,4463732,0 In Foo destructor: 49145,4420848,4420848 In Foo destructor: 0,0,0
In Foo constructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 0,0,0 In Foo destructor: 808202284,876098098,909588524 In Foo destructor: 1920234341,1869898613,824195698 In Foo destructor: 1033,1176530505,1679847279 In Foo destructor: 0,168112064,0 In Foo destructor: 0,0,0 In Foo destructor: 0,688,0 In Foo destructor: 49,1628538200,-552734650 In Foo destructor: 0,0,0