malloc失败的建议排查方法-2

文章展示了如何通过宏定义FILE__和__LINE__在C语言中获取文件和行号信息,然后封装malloc和free函数,以便在内存分配和释放时打印详细的调试信息,包括文件名、行号和内存地址,从而提高程序调试的效率。
摘要由CSDN通过智能技术生成

1:通过宏定义 FILE__和__LINE 获取文件和行号信息;
2:通过把原始malloc封装一下,实现 FILE__和__LINE 的打印;

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

// 要使用 __FILE__和__LINE__ 关键字
#define Malloc2(size)   DqMalloc(size, __FILE__, __LINE__)
#define Free2(ptr)      DqFree(ptr, __FILE__, __LINE__)

// 可以把使用malloc的文件名和行号打印出来
void *DqMalloc(int size, const char *filename, int line)
{
    void *ret = malloc(size);
    // 如果文件名太长,就需要用语法过滤一下
    printf("malloc-info file_name=%s, line = %d, addr = %08p, size = %d\n", filename, line, ret, size);
    return ret;
}

void DqFree(void *ptr, const char *filename, int line)
{
    printf("free-info   file_name=%s, line = %d, addr = %08p \n", filename, line, ptr);
    free(ptr);
}

int main (void)
{
    printf("hello world \r\n");

    void *ptr = Malloc2(1024);

    Free2(ptr);
    return 0;
}

3:使用VSCODE运行一下代码
下面是gcc编译过程和世纪的运行日志

[Running] cd "c:\Users\duqiu\Desktop\project\C\" && gcc malloc.c -o malloc && "c:\Users\duqiu\Desktop\project\C\"malloc
hello world 

malloc-info file_name=malloc.c, line = 28, addr = 0000000000B01420, size = 1024
free-info   file_name=malloc.c, line = 30, addr = 0000000000B01420 

[Done] exited with code=0 in 1 seconds
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值