嵌入式ARM程序高级调试技能:22.malloc free 的wrap实现,free支持 align free
嵌入式ARM程序高级调试技能:22.malloc free 的wrap实现,free支持 align free
文章目录
-
- 嵌入式ARM程序高级调试技能:22.malloc free 的wrap实现,free支持 align free
-
- 关键点说明:
- 使用示例:
- 注意事项:
以下是实现
malloc
和
free
的包装器(wrapper)的代码,其中
free
支持对齐释放(align free)。该实现通过记录分配的内存地址和对应的对齐方式,确保在释放时能正确处理对齐内存。
#include <stdlib.h>
#include <stdint.h>
#include <string.h>// 内存块头部信息(存储分配的对齐方式)
typedef struct {size_t alignment;
} AlignedHeader;// 包装的malloc函数,支持对齐分配
void* aligned_malloc(size_t size, size_t alignment) {// 检查对齐值是否为2的幂(对齐要求)if (alignment & (alignment - 1) || alignment == 0) {return NULL; // 无效对齐值}// 计算需要分配的总内存:头部 + 对齐填充 + 用户数据size_t header_size = sizeof(AlignedHeader);size_t total_size = size + header_size + alignment - 1;