同城版网站建设,网站开发亿玛酷给力5,北京杰诚 做网站,常州做网站建设有这么一道题目#xff0c;要求按任意字节对齐分配内存#xff0c;接口#xff1a;char * aligned_malloc(int size, int alignment)//size 为分配的内存大小#xff0c;alignment对齐基数#xff08;可以为任意数#xff09;这个在gcc库函数里能找到源码#xff0c;在f…有这么一道题目要求按任意字节对齐分配内存接口char * aligned_malloc(int size, int alignment)//size 为分配的内存大小alignment对齐基数可以为任意数这个在gcc库函数里能找到源码在ffdshow等开源代码里面也能找到源码实现如下void * aligned_malloc (int size, int alignment) { void* ptr malloc(size alignment); if (ptr) { void* aligned (void*)(((long)ptr alignment) ~(alignment - 1)); ((void**)aligned)[-1] ptr; return aligned; } else return NULL; }
void *aligned_free(void *paligned){delete [ ]paligned;}解这道题目关键是和释放联系起来利用分配的内存首地址的前一地址记录内存真正分配的起始位置想不到这点就玩完了。面试的时候经常会考这类题目大家可以多看看linux下面库函数的源码对自己本身就是一种提高。