vs调试c语言检查内存泄露,C语言检测内存泄漏

直接贴代码

核心思想:

1、自己封装内存分配函数mymalloc,在该函数中将分配的内存地址,插入链表中。

2、自己封装内存释放函数myfree,将传入的内存地址从链表中删除。

3、程序末尾,再次检查链表中是否有数据,如果不为空,说明忘记释放,内存泄漏了,此时从链表中取个内存地址,依次释放。#include

#include

#include            //谷歌开源的

#include       //谷歌开源的

list_t* pslist_coll1 = NULL;      //创建链表指针,并初始化

static void*mymalloc(size_t size)

{

if (size <= 0)

{

return NULL;

}

void* p=malloc(size);    //将分配的地址插入链表

list_push_front(pslist_coll1,p);

return p;

}

static void myfree(void* p)

{

if (p != NULL)

{

list_remove(pslist_coll1,p);    //将释放的地址从链表删除

free(p);

}

}

static void _print(const void* cpv_input, void* pv_output)

{

printf("%p ", cpv_input);    //打印链表中的地址

}

int main()

{

pslist_coll1 = create_list(void*);    //创建链表,地址数据本质就是void*类型

list_init(pslist_coll1);              //链表初始化

void* p1=mymalloc(1);

void* p2=mymalloc(1);

void* p3=mymalloc(1);

void* p4=mymalloc(1);

printf("释放前的内存地址: ");

algo_for_each(list_begin(pslist_coll1), list_end(pslist_coll1), _print); //链表遍历

myfree(p1);

myfree(p2);

myfree(p3);

myfree(p4);

printf("\n释放后的内存地址: ");

algo_for_each(list_begin(pslist_coll1), list_end(pslist_coll1), _print);

getchar();

return 0;

}

运行结果如图:

0f0352739047623a1d954af9c1d980d6.png

个人交流qq:757368775

交流群:599151072

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值