[fpc-devel] cmem not aligning memory
jonas.maebe at elis.ugent.be
Tue Apr 6 13:07:05 CEST 2010
On 06 Apr 2010, at 12:00, Michael Schnell wrote:
> On 04/03/2010 02:12 PM, Jonas Maebe wrote:
>> From Linux' malloc man page:
>> For calloc() and malloc(), the value returned is a pointer to the
>> cated memory, which is suitably aligned for any kind of variable, or
>> NULL if the request fails.
> Hmm. What does "suitable" mean ?
Conforming to the cpu's alignment requirements.
> With many embedded CPUs alignment is
> forced to prevent runtime errors. With an X86 any alignment is allowed
> but performance is different
Vectors on x86 also require the memory to be aligned (unless you use
special instructions, but by default compilers will not do that since
that partially defeats the purpose of using vectors).
> Of course for Integers and Pointers Dword
> alignment (or QWord for 64 Bit systems) is appropriate (and supposedly
> provided by malloc. But with Vectors (and long Reals) more strict
> alignment might be faster. malloc() does not handle this. The C
> provides calloc() for this purpose,
No, calloc simply zeroes the allocated memory.
More information about the fpc-devel