C++内存泄漏及内存对齐

本文探讨了C++中的内存泄漏问题,包括定义、具体表现及检测方法,并详细阐述了内存对齐的原因和实际应用,强调了其在数据成员对齐规则和结构体对齐规则中的体现。
摘要由CSDN通过智能技术生成

内存架构

在这里插入图片描述

什么是内存泄漏?

简单说就是申请了一块内存地址,使用完毕之后没有释放,造成了内存泄漏。

具体体现为:

  1. newmalloc申请资源使用后,没有用deletefree释放。
  2. 子类继承父类时,父类的析构函数不是虚函数。
  3. windows句柄资源使用后没有释放。

如何检测内存泄漏?

  1. 使用了内存分配的函数,使用完之后记得释放。
  2. 将分配内存的指针以链表的形式保存管理,使用完毕后从链表中删除,程序结束时检查改链表。
  3. 使用智能指针。
  4. 使用其他工具:linuxccmalloc

为什么要内存对齐

需要字节对齐的根本原因在于CPU访问数据的效率问题

内存对齐的具体体现

内存对齐用于三种数据类型中:class/struct/union

  1. 数据成员对齐规则:结构(struct)或联合(union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小的整数倍开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值