导读
- 尽可能使用 string 而不是 char*-based 字符串
- 如果发生 exception,string objects 不会出现内存泄漏(memory leak)的情况
- 当你分配了内存但没有释放它,会出现内存泄漏.
- 相较于传统 C 的内存泄漏,C++ 泄露的不只是内存,因为 C++ 在创建对象时还要调用 constructor,其中可能存在资源分配
class Widget { ... }; // some class...
Widget *pw = new Widget;
... // 假设 pw 一直没有被 delete
上面的代码会泄露资源,比如
file descriptors
,semaphones
… 这些资源只有在 Widget 对象被销毁(调用 destructor)时才会被释放。
- 相较于传统 C 的内存泄漏,C++ 泄露的不只是内存,因为 C++ 在创建对象时还要调用 constructor,其中可能存在资源分配