C++经典面试题:内存泄露是什么?如何排查?

1.内存泄露的定义:内存泄漏简单的说就是申请了⼀块内存空间,使⽤完毕后没有释放掉。 它的⼀般表现⽅式是程序运⾏时间越⻓,占⽤内存越多,最终⽤尽全部内存,整个系统崩溃。由程序申请的⼀块内存,且没有任何⼀个指针指向它,那么这块内存就泄漏了。

2.如何检测内存泄漏

⾸先可以通过观察猜测是否可能发⽣内存泄漏, Linux 中使⽤ swap 命令观察还有多少可⽤的交换空间,在⼀两分钟内键⼊该命令三到四次,看看可⽤的交换区是否在减少。

还可以使⽤ 其他⼀些 /usr/bin/stat ⼯具如 netstat、 vmstat 等。如发现波段有内存被分配且从不释放,⼀个可能的解释就是有个进程出现了内存泄漏。

当然也有⽤于内存调试,内存泄漏检测以及性能分析的软件开发⼯具 valgrind 这样的⼯具来进⾏内存泄漏的检测

3.在编译时使用 -fsanitize=address

复制代码
g++ -o demo demo.cpp -g -fsanitize=address

运行后

红字符 提示内存泄漏

蓝色字符提示哪一行泄漏 泄漏了多少

相关推荐
Irene1991几秒前
两种 Linux 发行版:Ubuntu 与 CentOS Shell 环境核心差异对比(查看 Linux 版本,Hadoop 是什么)
linux·ubuntu·centos
j7~1 分钟前
【Linux系统】基础IO(文件描述)(1)
linux·服务器·c++·文件·基础io
星辰&与海3 分钟前
多个串口加输出
linux
广州灵眸科技有限公司4 分钟前
瑞芯微(EASY EAI)RV1126B 模型部署API说明
linux·开发语言·网络·人工智能·深度学习·算法·yolo
gjc5925 分钟前
Linux MySQL服务器SSH多端口配置:解决22端口禁直连,兼顾安全与运维
linux·运维·服务器·mysql·ssh
计算机安禾6 分钟前
【c++面向对象编程】第20篇:override与final关键字:现代C++对继承的控制
开发语言·c++
郝学胜-神的一滴9 分钟前
Qt 高级开发 004: 三大窗口类深度解析
开发语言·c++·qt·程序人生·系统架构
largecode14 分钟前
怎么让手机显示公司名?来电显示公司名称认证实现品牌外显
linux·ubuntu·华为od·华为·智能手机·华为云·harmonyos
祁白_16 分钟前
跨平台通用危险函数深度解析
linux·windows·笔记·安全·系统命令
柿柿快乐17 分钟前
用户认证系统实现文档
linux·服务器·网络·学习·基础教学