库实现之分配内存对齐的程序aligned_malloc和aligned_free函数
2013-10-28 08:51
387 查看
分配内存管理对齐的程序
void *aligned_malloc(int size, int alignment)
{
void *ptr = (void*)malloc(size + alignment);
if (ptr)
{
void * aligned =(void *)(((long)ptr + alignment) & (~(alignment-1)));
(void **)aligned[-1] = ptr;
return aligned;
}
return NULL;
}
释放函数aligned_free
void *aligned_free(void *paligned)
{
free(paligned);
}
关键是利用分配的内存首地址的前一地址记录内存真正分配的起始地址
void *aligned_malloc(int size, int alignment)
{
void *ptr = (void*)malloc(size + alignment);
if (ptr)
{
void * aligned =(void *)(((long)ptr + alignment) & (~(alignment-1)));
(void **)aligned[-1] = ptr;
return aligned;
}
return NULL;
}
释放函数aligned_free
void *aligned_free(void *paligned)
{
free(paligned);
}
关键是利用分配的内存首地址的前一地址记录内存真正分配的起始地址
相关文章推荐
- 实现支持2^n字节对齐分配的malloc和free函数
- redis之内存分配malloc底层实现(转)
- 请编写实现malloc()内存分配函数功能一样的代码。给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
- SGI STL 内存分配方式及malloc底层实现分析
- C语言动态内存分配:(二)malloc/calloc/realloc/aligned_malloc
- 嵌入式操作系统分析:浅析动态内存分配及Malloc/free的实现
- 动态内存分配及Malloc/free的实现
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 探究操作系统的内存分配(malloc)对齐策略
- 4、实现malloc内存分配函数功能一样的代码
- 编写支持对其分配的malloc和free函数,分配内存时,malloc函数返回的地址必须能被2的n次方整除
- 实现任意字节对齐的内存分配和释放
- C语言实现用程序数据段空间模拟内存的动态分配
- 实现任意字节对齐的内存分配和释放
- 内存储器管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- 探究操作系统的内存分配(malloc)对齐策略
- 嵌入式操作系统分析(六):浅析动态内存分配及Malloc/free的实现
- 内存管理概述、内存分配与释放、地址映射机制(mm_struct, vm_area_struct)、malloc/free 的实现
- C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存