Справочник Пользователя для AMD 250

Скачать
Страница из 384
Chapter 2
C and C++ Source-Level Optimizations
19
Software Optimization Guide for AMD64 Processors
25112
Rev. 3.06
September 2005
2.7
Dynamic 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