From: hook@cscsun3.larc.nasa.gov (Ed Hook)
Subject: Re: HELP ! need to insert value in array !!
Date: 1997/06/30
Date: 1997-06-30T00:00:00+00:00 [thread overview]
Message-ID: <5p8bd0$rhc$2@reznor.larc.nasa.gov> (raw)
In-Reply-To: dewar.867608134@merv
In article <dewar.867608134@merv>, dewar@merv.cs.nyu.edu (Robert Dewar) writes:
|> Michael said
|>
|> <<It's quite easy to detect the difference. For example,
|>
|> #include <stdio.h>
|>
|> int main(void)
|> {
|> int a[2];
|> unsigned long d = (char*) a[1] - (char*) a[0];
Actually, the line above should probably be:
unsigned long d = (char *)(a + 1) - (char *)a;
|> printf ("%lu %lu\n", d, sizeof(int));
|> return 0;
|> }
|>
|> This must print the same number twice.
|> >>
|>
|>
|> I am unable to prove that the above code has well defined semantics
|> according to the ANSI standard. The casts of integer pointers into
|> character pointers seem quite implementation dependent in their
|> exact meaning to me. In fact it seems quite hard yto implement
|> this natural semantics on some word oriented machines.
|>
|> Also, you did not answer my point about alignment. Suppose the array
|> element type is one whose size is not a multiple of its alignment.
|> How can gaps be avoided in such a case?
|>
The compiler is allowed to insert padding bytes _in_the_element_;
it's just not permitted to add additional padding _between_ elements.
That's needed to guarantee (for instance) that an allocation of
n * sizeof(<type>) bytes can successfully hold an array of n elements
of type <type>.
|> Or are you saying that the ANSI standard requires that the size be a
.allows.
|> multiple of the required alignment. If so, please quote chapter and
|> verse.
|>
I don't have a copy of the Standard handy, so I'll let someone else
provided citations.
|> It would be useful to know whether you are talking about things that "everyone
|> knows must be so", or things that are guaranteed to have the semantics you claim
|> from the standard.
|>
I'm fairly certain that this (=="no padding between array elements") _is_
guaranteed by the Standard (but, again, I can't provide the requested
"chapter and verse").
|> if the latter, relevant references to the standard would be helpful in
|> following your argument.
|>
--
Ed Hook | Copula eam, se non posit
Computer Sciences Corporation | acceptera jocularum.
NASA Langley Research Center | Me? Speak for my employer?...<*snort*>
Internet: hook@cscsun3.larc.nasa.gov | ... Get a _clue_ !!! ...
next prev parent reply other threads:[~1997-06-30 0:00 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <33A9C27C.22F7@post4.tele.dk>
[not found] ` <5oci49$97g@crl.crl.com>
[not found] ` <866920621snz@genesis.demon.co.uk>
1997-06-27 0:00 ` HELP ! need to insert value in array !! Ralph Silverman
1997-06-28 0:00 ` Lawrence Kirby
[not found] ` <dewar.867554609@merv>
1997-06-29 0:00 ` Mike Rubenstein
1997-06-29 0:00 ` Robert Dewar
1997-06-29 0:00 ` Mike Rubenstein
1997-06-29 0:00 ` Robert Dewar
1997-06-29 0:00 ` Mike Rubenstein
1997-06-30 0:00 ` Ed Hook [this message]
1997-07-04 0:00 ` Richard A. O'Keefe
1997-07-07 0:00 ` Clive D.W. Feather
1997-07-01 0:00 ` Al Bowers
1997-07-01 0:00 ` Richard Kenner
1997-07-01 0:00 ` Robert Dewar
1997-07-02 0:00 ` Christian Froeschlin
1997-07-02 0:00 ` Robert Dewar
1997-07-04 0:00 ` Richard A. O'Keefe
1997-07-04 0:00 ` Robert Dewar
1997-07-04 0:00 ` Mike Rubenstein
1997-07-05 0:00 ` Robert Dewar
1997-07-05 0:00 ` Mike Rubenstein
1997-07-05 0:00 ` Mike Rubenstein
1997-07-05 0:00 ` Larry Kilgallen
1997-07-10 0:00 ` Alan Bowler
1997-07-07 0:00 ` Mark H. Wood
1997-07-09 0:00 ` Robert Dewar
1997-07-10 0:00 ` Lawrence Kirby
1997-07-07 0:00 ` Shmuel (Seymour J.) Metz
1997-07-08 0:00 ` Richard Kenner
1997-06-30 0:00 ` Samuel T. Harris
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox