使用下面的内存分配函数,预定一个宏MEM_ALIGNMENT,这个就是对齐的字节数,1024bit就是128字节对齐。
void* aligned_malloc(size_t size){
void* non_aligned;
void** aligned;
non_aligned = (void*)malloc(size+(MEM_ALIGNMENT-1)+sizeof(void*));
assert(non_aligned != NULL);
aligned = (void**)( (size_t)((size_t)(non_aligned)+MEM_ALIGNMENT+sizeof(void*) & ~(MEM_ALIGNMENT-1)));
*(aligned-1) = non_aligned;
return (void*)aligned;
}
void aligned_free(void* p){
assert(p != NULL);
free(*((void **)p-1));
}