25112 Rev. 3.06 September 2005

Software Optimization Guide for AMD64 Processors

2.7Dynamic Memory Allocation Consideration

Dynamic memory allocation—accomplished through the use of the malloc library function in C— should always return a pointer that is suitably aligned for the largest base type (quadword alignment). Where this aligned pointer cannot be guaranteed, use the technique shown in the following code to make the pointer quadword aligned, if needed. This code assumes that it is possible to cast the pointer to a long.

double *p; double *np;

p= (double *)malloc(sizeof(double) * number_of_doubles + 7L); np = (double *)((((long)(p)) + 7L) & (-8L));

Then use np instead of p to access the data. The pointer p is still needed in order to deallocate the storage.

Application

This optimization applies to:

32-bit software

64-bit software

Chapter 2

C and C++ Source-Level Optimizations

19

Page 35
Image 35
AMD 250 manual Dynamic Memory Allocation Consideration