王锐
发布于 2024-11-17 / 10 阅读
0
0

C/C++面试基础,内存泄漏问题如何解决

  • 内存泄漏是什么?

某指针的内存空间未被分配或已被释放,程序访问了此地址会导致内存泄漏,表现在程序异常退出。

  • 如何定位

  1. 开发时,使用日志,至少能保证定位到大概的问题,这种一般被称为问题可定位手段,包括日志打印、统计计数;

  2. 使用gdb方式;

  3. 编译开启asan选项,出现内存异常可以打印详细的内存栈;

  • 尽量避免不规范的编程习惯,通过代码检视限制;

  • 每个迭代都需要实现对应的测试用例,保证门禁的CI/CD对这个迭代的监控

  • fuzz测试,设置程序/进程的主入口,进行fuzz测试能够发现程序中可能出现的内存泄漏、安全等问题。

编程规范

  1. 使用指针时首先判空,至少函数调用栈中,入口函数已经进行了判空操作;

  2. 函数入参为指针场景,必须规定入参为数组指针;

  3. 对IO操作函数检视进行严格限制,或者对IO操作函数实现自己的函数,增加对地址空间的检查后再进行空间分配或者释放;


评论