C语言基础:5.3动态内存管理

【C语言核心】动态内存管理完全指南

一、内存管理函数规范详解

1. 四大核心函数对比

/* 函数原型 */
void* malloc(size_t size);          // 分配未初始化内存
void* calloc(size_t num, size_t size); // 分配并清零内存
void* realloc(void* ptr, size_t new_size); // 调整内存块大小
void free(void* ptr);               // 释放内存

/* 使用规范示例 */
// 安全分配模板
#define SAFE_MALLOC(p, type, n) \
    do {
      \
        (p) = (type*)malloc((n) * sizeof(type)); \
        if (!(p)) {
      \
            fprintf(stderr, "内存分配失败: %s:%d", __FILE__, __LINE__); \
            exit(EXIT_FAILURE); \
        } \
    } while(0)

// 正确使用模式
int* create_int_array(size_t len) {
   
    int* arr = calloc(len, sizeof(int)); // 自动初始化为0
    if (!arr) {
   
        perror("数组创建失败");
        return NULL;
    }
    return arr;
}

2. realloc深度解析

// 安全扩容模式
int* safe_realloc(int** ptr, size_t new_len) {
   
    int* new_ptr = realloc(*ptr, new_len * sizeof(int));
    if (!new_ptr) {
   
        free(*ptr); // 保持原有数据有效
        *ptr = NULL;
        return -1;  // 错误码
    }
    *ptr = new_ptr;
    return 0;
}

/* 扩容策略建议:
   初始容量:8
   增长因子:1.5倍(平衡空间/时间效率)
   阈值处理:超过1MB后改为固定步长增长
*/

二、内存泄漏防御体系

1. 资源追踪技术

// 调试版本内存追踪
#ifdef DEBUG
    #define MEM_TRACK_MAX 1024
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赵鑫亿

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值