www.delorie.com/archives/browse.cgi | search |
Message-ID: | <3B837177.F0C4C3C2@acm.org> |
From: | Eric Sosman <esosman AT acm DOT org> |
X-Mailer: | Mozilla 4.72 [en] (Win95; U) |
X-Accept-Language: | en |
MIME-Version: | 1.0 |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: exit( ) versus return 0; and abort |
References: | <3B88F7B3 AT MailAndNews DOT com> <200108211928 DOT PAA07064 AT envy DOT delorie DOT com> |
Lines: | 20 |
Date: | Wed, 22 Aug 2001 13:41:54 GMT |
NNTP-Posting-Host: | 12.91.3.190 |
X-Complaints-To: | abuse AT worldnet DOT att DOT net |
X-Trace: | bgtnsc04-news.ops.worldnet.att.net 998487714 12.91.3.190 (Wed, 22 Aug 2001 13:41:54 GMT) |
NNTP-Posting-Date: | Wed, 22 Aug 2001 13:41:54 GMT |
Organization: | AT&T Worldnet |
To: | djgpp AT delorie DOT com |
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
Reply-To: | djgpp AT delorie DOT com |
DJ Delorie wrote: > > A return from main is exactly the same as calling exit with the same > value. [...] There is a slight difference: returning from main() discards any `auto' variables it may have. This will be a problem if the end-of-run cleanup activities try to refer to these no-longer-existing data objects. How can it happen that post-program cleanup tries to use main()'s `auto' variables? One way is by registering functions with atexit() and having them use pointers to variables which happen to be local to main(). A slightly subtler problem is using setvbuf() to cause some I/O stream to use a stack-resident buffer in main(); if this stream is still open when main() returns there may be Hell to pay. -- Eric Sosman esosman AT acm DOT org
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |