Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Keith Thompson <kst-u@mib.org> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: no stack |
| Date | 2015-03-24 12:30 -0700 |
| Organization | None to speak of |
| Message-ID | <87egoery65.fsf@kst-u.example.com> (permalink) |
| References | <347790b0-5f11-4008-b254-5b5d5229a387@googlegroups.com> <f00ddc97-5d80-49ab-b0cf-1a04801b9a5e@googlegroups.com> |
John Bode <jfbode1029@gmail.com> writes:
[...]
> No. Function arguments and block-scope variables have lifetimes limited to
> their enclosing scope; they should not be accessible outside of that scope.
>
> For example:
>
> int *globalPtr;
>
> void foo( void )
> {
> int a = 5;
> ptr = &a;
> }
>
> void bar( void )
> {
> foo();
> printf( "*ptr = %d\n", *ptr );
> *ptr = 6;
> }
>
> This *should* invoke undefined behavior; we're trying to read and update `a`
> outside of its lifetime. If `a` is allocated statically in the
> same sense that `ptr` is allocated statically, how would you determine
> whether `a` is "live" or not? You'd have to keep track of what scope you're
> in vs. what scope `a` belongs to.
Quibble: Scope and lifetime are two distinct things. Scope is a region
of program text in which an identifier is visible; lifetime is a
duration during program execution in which an object exists.
For local variables with automatic storage duration, the distinction can
*almost* be ignored; you can think of both scope and lifetime as
extending to the closing }. But (a) the lifetime of a local object
begins at the beginning of the enclosing block, not at its declaration
(there are contrived cases where you can access the object within its
lifetime but outside its scope), and (b) if an object is declared in a
loop, then there's logically a distinct object for each iteration of the
loop (saving its address in one iteration and using that address to
access it in the next is undefined behavior, though it's likely to
"work").
More significantly, you can pass the address of a local object to
another function. That other function is clearly outside the *scope* of
the object, but it can access it within its lifetime.
[...]
--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
Working, but not speaking, for JetHead Development, Inc.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
no stack fir <profesor.fir@gmail.com> - 2015-03-22 02:09 -0700
Re: no stack wssimms@gmail.com - 2015-03-22 02:52 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 03:04 -0700
Re: no stack Richard Heathfield <rjh@cpax.org.uk> - 2015-03-22 13:15 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 07:37 -0700
Re: no stack Lőrinczy Zsigmond <nospam@for.me> - 2015-03-22 11:10 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 03:30 -0700
Re: no stack jacob navia <jacob@jacob.remcomp.fr> - 2015-03-22 11:15 +0100
Re: no stack jacob navia <jacob@jacob.remcomp.fr> - 2015-03-22 11:23 +0100
Re: no stack jacob navia <jacob@jacob.remcomp.fr> - 2015-03-22 11:24 +0100
Re: no stack jacob navia <jacob@jacob.remcomp.fr> - 2015-03-22 11:41 +0100
Re: no stack Keith Thompson <kst-u@mib.org> - 2015-03-22 12:18 -0700
Re: no stack Melzzzzz <mel@zzzzz.com> - 2015-03-22 20:25 +0100
Re: no stack Stephen Sprunk <stephen@sprunk.org> - 2015-03-23 12:17 -0500
Re: no stack James Kuyper <jameskuyper@verizon.net> - 2015-03-23 13:22 -0400
Re: no stack Bartc <bc@freeuk.com> - 2015-03-22 11:13 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 04:29 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 04:33 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 04:39 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 04:46 -0700
Re: no stack Bartc <bc@freeuk.com> - 2015-03-22 12:16 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 05:25 -0700
Re: no stack Bartc <bc@freeuk.com> - 2015-03-22 12:59 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 07:15 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 15:39 +0100
Re: no stack Bartc <bc@freeuk.com> - 2015-03-22 19:47 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 02:18 -0700
Re: no stack Bartc <bc@freeuk.com> - 2015-03-23 11:21 +0000
Re: no stack Richard Heathfield <rjh@cpax.org.uk> - 2015-03-23 11:35 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 07:07 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 07:28 -0700
Re: no stack Bartc <bc@freeuk.com> - 2015-03-23 14:56 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 08:13 -0700
Re: no stack Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-22 13:01 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-23 13:14 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 05:30 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 14:15 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 04:49 -0700
Re: no stack Melzzzzz <mel@zzzzz.com> - 2015-03-22 12:37 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 05:06 -0700
Re: no stack Melzzzzz <mel@zzzzz.com> - 2015-03-22 13:23 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 05:48 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 08:51 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 07:39 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 07:54 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 14:45 +0100
Re: no stack Richard Heathfield <rjh@cpax.org.uk> - 2015-03-22 14:20 +0000
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 15:43 +0100
Re: no stack Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-22 13:09 -0700
Re: no stack Bartc <bc@freeuk.com> - 2015-03-22 20:38 +0000
Re: no stack Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-22 13:54 -0700
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 02:08 -0700
Re: no stack Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-03-23 12:07 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-23 07:13 -0700
Re: no stack Kaz Kylheku <kaz@kylheku.com> - 2015-03-22 20:59 +0000
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 07:35 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 16:27 +0100
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-22 05:10 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-22 13:56 +0100
Re: no stack John Bode <jfbode1029@gmail.com> - 2015-03-24 09:01 -0700
Re: no stack Keith Thompson <kst-u@mib.org> - 2015-03-24 12:30 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-25 09:16 +0100
Re: no stack Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 09:00 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-25 17:33 +0100
Re: no stack James Kuyper <jameskuyper@verizon.net> - 2015-03-25 13:35 -0400
Re: no stack Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-25 16:22 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-26 08:54 +0100
Re: no stack Keith Thompson <kst-u@mib.org> - 2015-03-26 08:48 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-26 23:00 +0100
Re: no stack Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-28 09:15 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-28 18:17 +0100
Re: no stack Malcolm McLean <malcolm.mclean5@btinternet.com> - 2015-03-28 12:36 -0700
Re: no stack Richard Damon <Richard@Damon-Family.org> - 2015-03-28 17:33 -0400
Re: no stack Tim Rentsch <txr@alumni.caltech.edu> - 2015-03-30 08:04 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-04-07 00:39 +0200
Re: no stack fir <profesor.fir@gmail.com> - 2015-03-26 01:21 -0700
Re: no stack Keith Thompson <kst-u@mib.org> - 2015-03-25 10:57 -0700
Re: no stack David Brown <david.brown@hesbynett.no> - 2015-03-25 21:55 +0100
csiph-web