Date: Sun, 1 Jun 1997 02:40:43 +0200 From: j@uriah.heep.sax.de (J Wunsch) To: freebsd-hackers@freebsd.org (FreeBSD hackers) Cc: un_x@anchorage.net (Steve Howe) Subject: Re: Borland 16bit bcc vs cc/gcc (float) Message-ID: <19970601024043.PG35696@uriah.heep.sax.de> In-Reply-To: <1.5.4.32.19970531220152.008b46f0@mindspring.com>; from Kevin P. Neal on May 31, 1997 18:01:52 -0400 References: <1.5.4.32.19970531220152.008b46f0@mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
As Kevin P. Neal wrote: > Who says you always have to use exit()? > > In fact, I've observed C++ code that never calls the destructors if you > exit() of out a program. Global destructors should be called. Destructors for objects local to main(), of course, not. j@uriah 119% cat foo.cc #include <ostream.h> #include <stdlib.h> class myobj { static int count; public: myobj() { cout << "Created my object # " << ++count << "\n"; } ~myobj() { cout << "Destroyed my object, " << --count << " remaining.\n"; } }; int myobj::count = 0; myobj y; int main(int argc, char **argv) { myobj x; if (argc > 1) exit(0); } j@uriah 120% c++ foo.cc j@uriah 121% ./a.out Created my object # 1 Created my object # 2 Destroyed my object, 1 remaining. Destroyed my object, 0 remaining. j@uriah 122% ./a.out "call exit() now" Created my object # 1 Created my object # 2 Destroyed my object, 1 remaining. -- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970601024043.PG35696>