首先,不要失去信心。有很多办法可以对付内存问题。我们先列出所有可能存在的实际问题:
内存泄漏
错误分配,包括大量增加 free() 释放的内存和未初始化的引用
悬空指针
数组边界违规
这是所有类型。即使迁移到 C++ 面向对象的语言,这些类型也不会有明显变化;无论数据是简单类型还是 C 语言的 struct 或 C++ 的类,C 和 C++ 中内存管理和引用的模型在原理上都是相同的。以下内容绝大部分是“纯 C”语言,对于扩展到 C++ 主要留作练习使用。
内存泄漏
在分配资源时会发生内存泄漏,但是它从不回收。下面是一个可能出错的模型(请参见清单 1):
清单 1. 简单的潜在堆内存丢失和缓冲区覆盖
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/