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: I want to ask a question... |
| Date | 2015-08-07 16:46 -0700 |
| Organization | None to speak of |
| Message-ID | <lnio8qfyr7.fsf@kst-u.example.com> (permalink) |
| References | <mq2uol$dpj$3@dont-email.me> <87pp2y7wl7.fsf@gmail.com> <lnmvy2g291.fsf@kst-u.example.com> <mq3cqv$7el$1@speranza.aioe.org> |
glen herrmannsfeldt <gah@ugcs.caltech.edu> writes:
> Keith Thompson <kst-u@mib.org> wrote:
>> Gareth Owen <gwowen@gmail.com> writes:
> (snip)
>>> You can access the pointer itself, but you can't access the memory it
>>> points to. Sometimes it might work - and it simple programs it probably
>>> will work more ofhen than not - but you can't rely on it.
>
>>> Don't do that.
>
>> That's not quite correct.
>
>> Accessing a pointer value after the object it points to no longer exists
>> has undefined behavior, even if you don't dereference it. It's not
>> likely to do anything nasty on most systems, but in principle an
>> implementation could mark the pointer value as invalid and trap on any
>> reference to it.
>
> That is true, but even on systems where it could cause problems,
> compilers try to avoid it.
>
> For protected mode 80286, loading a segment selector register
> also loads the corresponding segment descriptor. That operation
> will fail if the desriptor isn't valid. (0 is a special null
> segment selector that doesn't load a descriptor.)
>
> In copying pointers, compilers will normally not load a segment
> selector into a segment register, but will either use normal
> registers or other ways to move data.
[...]
It's also one of those cases where even if the behavior *weren't*
undefined, it would still be a good idea to avoid it.
Once you've passed a pointer to free(), there's not much reason to look
at its value again. If your program reads a pointer value after passing
it to free(), it's most likely because of a logical error in the program
(unless you're just doing it to see what happens).
Similarly, discussions of the fact that
i = i++;
has undefined behavior tend to overlook the fact that *whatever* it's
intended to do, there's certainly a clearer and simpler way to express
it that intent. Even if the order of evaluation and side effects were
strictly defined, it would still be better just to write:
i++;
--
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
Re: I want to ask a question... Gareth Owen <gwowen@gmail.com> - 2015-08-07 20:00 +0100
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-07 19:04 +0000
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-07 15:30 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-07 22:52 +0000
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-07 16:46 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-07 23:29 +0000
Re: I want to ask a question... Ben Bacarisse <ben.usenet@bsb.me.uk> - 2015-08-08 01:37 +0100
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-07 18:55 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-08 05:51 +0000
Re: I want to ask a question... Robert Wessel <robertwessel2@yahoo.com> - 2015-08-08 01:44 -0500
Re: I want to ask a question... Ken Brody <kenbrody@spamcop.net> - 2015-08-10 12:46 -0400
Re: I want to ask a question... supercat@casperkitty.com - 2015-08-19 16:43 -0700
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-19 18:09 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-20 01:00 +0000
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-19 20:25 -0700
Re: I want to ask a question... supercat@casperkitty.com - 2015-08-20 08:15 -0700
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-20 11:38 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-20 18:47 +0000
Re: I want to ask a question... supercat@casperkitty.com - 2015-08-20 14:01 -0700
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-20 16:43 +0000
Re: I want to ask a question... James Kuyper <jameskuyper@verizon.net> - 2015-08-20 13:02 -0400
Re: I want to ask a question... Tonton Th <tTh@nowhere.invalid> - 2015-08-20 17:40 +0000
Re: I want to ask a question... James Kuyper <jameskuyper@verizon.net> - 2015-08-20 15:27 -0400
Re: I want to ask a question... David Brown <david.brown@hesbynett.no> - 2015-08-20 22:58 +0200
Re: I want to ask a question... James Kuyper <jameskuyper@verizon.net> - 2015-08-20 23:24 -0400
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-21 06:19 +0000
Re: I want to ask a question... Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2015-08-21 09:20 -0600
Re: I want to ask a question... supercat@casperkitty.com - 2015-08-22 12:25 -0700
Re: I want to ask a question... Robert Wessel <robertwessel2@yahoo.com> - 2015-08-23 01:33 -0500
Re: I want to ask a question... glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2015-08-20 19:28 +0000
Re: I want to ask a question... Keith Thompson <kst-u@mib.org> - 2015-08-20 12:11 -0700
Re: I want to ask a question... David Brown <david.brown@hesbynett.no> - 2015-08-20 10:02 +0200
Re: I want to ask a question... raltbos@xs4all.nl (Richard Bos) - 2015-08-22 13:42 +0000
Re: I want to ask a question... supercat@casperkitty.com - 2015-08-22 12:23 -0700
csiph-web