嵌入式ARM程序高级调试技能:22.malloc free 的wrap实现,free支持 align free

嵌入式ARM程序高级调试技能:22.malloc free 的wrap实现,free支持 align free


以下是实现 mallocfree 的包装器(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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空胆好小

您的鼓励已签收,我会继续快马加

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值