Re: pointer conversion
- From: Eric Sosman <esosman@xxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 31 Aug 2007 15:53:19 -0400
Charlton Wilbur wrote:
"M" == Malcolm McLean <regniztar@xxxxxxxxxxxxxx> writes:
M> You will be OK. char is always 1 byte. So casting an arbitrary
M> pointer to a char *, adding an exact multiple of the size of
M> the original type, and casting back is guaranteed to preserve
M> alignment.
I am not so sure about that; would you care to cite C&V, please, if
you claim that it's guaranteed by the standard?
He's wrong: it's not guaranteed. Simple example:
int target = 42;
int *ptr = &target + 1; /* "an arbitrary pointer" */
ptr = (int*)((char*)ptr + sizeof *ptr); /* U.B. */
If the original pointer points at an actual object of its
type (so it's not "arbitrary"), the conversion is safe.
--
Eric Sosman
esosman@xxxxxxxxxxxxxxxxxxxx
.
- Follow-Ups:
- Re: pointer conversion
- From: Richard Tobin
- Re: pointer conversion
- References:
- pointer conversion
- From: junky_fellow@xxxxxxxxxxx
- Re: pointer conversion
- From: Malcolm McLean
- Re: pointer conversion
- From: Charlton Wilbur
- pointer conversion
- Prev by Date: Re: size_t problems
- Next by Date: Re: Porting C software
- Previous by thread: Re: pointer conversion
- Next by thread: Re: pointer conversion
- Index(es):
Relevant Pages
|