Date: Thu, 18 Aug 2005 15:53:48 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: Sergey Matveychuk <sem@freebsd.org> Cc: questions@freebsd.org Subject: Re: man malloc Message-ID: <20050818125348.GG1282@flame.pc> In-Reply-To: <43044212.20909@FreeBSD.org> References: <4303A632.1000809@FreeBSD.org> <4303B016.3030201@mac.com> <43044212.20909@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2005-08-18 12:08, Sergey Matveychuk <sem@freebsd.org> wrote: >Chuck Swiger wrote: >>>What is pointer coercion? I have no pointer before malloc() returns. >> >> Right. Well, malloc returns a (void *), but most people want to use the >> memory malloc returns to hold their own arrays, structs, whatever, which >> means that you need to be able to coerce the (void *) malloc gave you >> into whatever pointer type you want to actually use. >> >> So the memory malloc gives you needs to be aligned so that it's OK to be >> used for even the most restrictive datatype known to the system, >> commonly 8, 16, or 32 bytes. > > Pointer coercion means a type cast? I see now. > I read it as 'force change of pointer value' before. It may be surprising, but casting back and forth *MAY* change the value of the pointer. Think of something like ``memory models'' in MS-DOS and pointers that have both two parts, i.e. a segment address and an offset in the segment. Add to this a weird rule that says segment values are shifted up by 8 bits and then added to the offset value, mix a compiler that uses optimizations in the cocktail too, and you get strange things :-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050818125348.GG1282>