当前位置: 首页 > news >正文

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

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

2.如何检测内存泄漏
⾸先可以通过观察猜测是否可能发⽣内存泄漏, Linux 中使⽤ swap 命令观察还有多少可⽤的交换空间,在⼀两分钟内键⼊该命令三到四次,看看可⽤的交换区是否在减少。
还可以使⽤ 其他⼀些 /usr/bin/stat ⼯具如 netstat、 vmstat 等。如发现波段有内存被分配且从不释放,⼀个可能的解释就是有个进程出现了内存泄漏。
当然也有⽤于内存调试,内存泄漏检测以及性能分析的软件开发⼯具 valgrind 这样的⼯具来进⾏内存泄漏的检测

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

g++ -o demo demo.cpp -g -fsanitize=address

运行后

红字符 提示内存泄漏

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

http://www.lryc.cn/news/207058.html

相关文章:

  • Hadoop+Hive+Spark+Hbase开发环境练习
  • 使用Spring Boot限制在一分钟内某个IP只能访问10次
  • ES 数据迁移最佳实践
  • C++中低级内存操作
  • Linux硬盘大小查看命令全解析 (linux查看硬盘大小命令)
  • 什么是供应链金融?
  • Qt之实现支持多选的QCombobox
  • 【UI设计】Figma_“全面”快捷键
  • 计算机网络(谢希仁)第八版课后题答案(第一章)
  • argparse模块介绍
  • 分布式、集群、微服务
  • Android Studio的debug和release模式及签名配置
  • 【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记
  • 【Java集合类面试二十一】、请介绍TreeMap的底层原理
  • Go语言Channel
  • java 编译 引用 jar 包进行编译和执行编译后的class文件
  • Linux系统之部署Tale个人博客系统
  • 【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础
  • 算法通关村|黄金挑战|K个一组进行反转
  • 【Android Studio】工程中文件Annotate with Git Blame 不能点击
  • Ant Design Vue
  • ATA-P2010压电叠堆功率放大器-直流偏置对压电叠堆测试的重要性
  • 短视频矩阵系统搭建/源头----源码
  • 基于.Net CEF 实现 Vue 等前端技术栈构建 Windows 窗体应用
  • qt中怎么在鼠标停留的位置上显示该点的坐标位置
  • 两个list中实体某个属性值相同的实体和不同的实体
  • Linux下利用Docker快速部署Kafka
  • 竞赛 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类
  • jvm摘要
  • GZ035 5G组网与运维赛题第1套