Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #18874

Re: addresses of variables

From jacob navia <jacob@spamsink.net>
Newsgroups comp.lang.c
Subject Re: addresses of variables
Date 2012-03-19 20:11 +0100
Organization lccwin
Message-ID <jk80cb$ch7$1@speranza.aioe.org> (permalink)
References (1 earlier) <4F65D575.10F1@mindspring.com> <25634479.146.1332070955396.JavaMail.geo-discussion-forums@vbbdy9> <44vcm0ve21.fsf@be-well.ilk.org> <jk7ru4$om5$1@dont-email.me> <4F677B52.4020500@verizon.net>

Show all headers | View raw


Le 19/03/12 19:30, James Kuyper a écrit :
> On 03/19/2012 01:55 PM, Stephen Sprunk wrote:
>> On 19-Mar-12 09:52, Lowell Gilbert wrote:
>>> Zero<chefmuetze@web.de>  writes:
>>>> Thank you!
>>>
>>> Note, however, that by printing the addresses, that code may have
>>> changed how the compiler would otherwise have stored the variables.
>>
>> The Uncertainty Principle applied to C?  Good job!
>>
>>> This isn't just compiler-dependent; it tends to be very sensitive to
>>> optimization, as well.
>>
>> Indeed; this is a very basic optimization.  Any decent compiler will try
>> to eliminate variables, where possible, and to store the ones it can't
>> in registers.  Taking the address of a variable, though, forces that
>> variable to be stored in memory.
>
> Sort-of. Because of the as-if principle,&variable doesn't have to
> actually identify the location (if any) where the variable is stored
> unless some other part of the program would make the failure of the
> program to store it there detectable.
>
> For instance, if two non-overlapping objects have overlapping lifetimes,
> and the program prints out the values of pointers to those two objects,
> the print outs must identify different memory locations. If those
> addresses are compared for equality, they must compare unequal. If such
> a pointer is dereferenced, the behavior must be the same as if it
> actually pointed at the object it's supposed to refer to. However, if
> none of those things occur, printf("%p\n", (void*)&object) can print
> just about any arbitrary memory location that is not, detectably,
> currently in use for some other purpose, regardless of how (or whether)
> the variable is actually stored.

I would rather avoid such compilers.

The problem is that the compiler writer has NO idea what is going on
and why the value of that variable is being printed.

For instance

void *p = list->next;
#ifdef DEBUG
printf("Next pointer is %p\n",p);
#endif
} // function end

True, p is never used anywhere and the "as if" reasoning
invoked by you is "right".

The programmer however, wants to identify the faulty pointer
and that address will help him figure out a bug!

It is extremely dangerous when compilers start doing whatever
they want instead of LIMITING themselves to COMPILE the code!

jacob

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

addresses of variables Zero <chefmuetze@web.de> - 2012-03-18 03:56 -0700
  Re: addresses of variables "BartC" <bc@freeuk.com> - 2012-03-18 11:18 +0000
  Re: addresses of variables jt@toerring.de (Jens Thoms Toerring) - 2012-03-18 11:18 +0000
  Re: addresses of variables pete <pfiland@mindspring.com> - 2012-03-18 07:30 -0500
    Re: addresses of variables Zero <chefmuetze@web.de> - 2012-03-18 04:42 -0700
      Re: addresses of variables Lowell Gilbert <lgusenet@be-well.ilk.org> - 2012-03-19 10:52 -0400
        Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-19 12:55 -0500
          Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-19 14:30 -0400
            Re: addresses of variables jacob navia <jacob@spamsink.net> - 2012-03-19 20:11 +0100
              Re: addresses of variables hoganlong@gmail.com - 2012-03-19 12:17 -0700
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-19 16:15 -0400
                Re: addresses of variables hoganlong@gmail.com - 2012-03-19 14:18 -0700
                Re: addresses of variables "io_x" <a@b.c.invalid> - 2012-03-19 23:26 +0100
            Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-20 03:52 -0500
              Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-20 06:00 -0400
                Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-20 16:47 -0500
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-20 18:37 -0400
                Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-21 17:58 -0500
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-21 20:24 -0400
                Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-21 23:53 -0500
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-22 06:22 -0400
                Re: addresses of variables Kenneth Brody <kenbrody@spamcop.net> - 2012-03-22 12:01 -0400
                Re: addresses of variables Stephen Sprunk <stephen@sprunk.org> - 2012-03-24 16:09 -0500
                Re: addresses of variables Jens Gustedt <jens.gustedt@loria.fr> - 2012-03-23 13:41 +0100
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-23 09:06 -0400
                Re: addresses of variables Jens Gustedt <jens.gustedt@loria.fr> - 2012-03-23 19:47 +0100
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-23 16:04 -0400
                Re: addresses of variables Jens Gustedt <jens.gustedt@loria.fr> - 2012-03-24 00:19 +0100
                Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-23 22:20 -0400
                Re: addresses of variables Jens Gustedt <jens.gustedt@loria.fr> - 2012-03-24 09:39 +0100
            Re: addresses of variables Anders Wegge Keller <wegge@wegge.dk> - 2012-03-20 20:02 +0100
              Re: addresses of variables James Kuyper <jameskuyper@verizon.net> - 2012-03-20 15:18 -0400
                Re: addresses of variables Anders Wegge Keller <wegge@wegge.dk> - 2012-03-21 21:37 +0100
          Re: addresses of variables Lowell Gilbert <lgusenet@be-well.ilk.org> - 2012-03-20 11:52 -0400
            Re: addresses of variables Kenneth Brody <kenbrody@spamcop.net> - 2012-03-21 11:04 -0400

csiph-web