三星 C++ 怎么防止内存泄漏
内存泄漏将会导致系统内存中无用的空间越来越多,最终导致内存不足,内存爆炸。所以,有必要防止内存泄漏。本文介绍了两种防止内存泄漏的方法以及内存泄漏检测工具valgrind的实现原理。
1、防止内存泄漏
1、内部封装
将内存的分配和释放封装到类中。在类中构造构造函数和析构函数。构造的时候分配内存空间,最后从析构函数中释放内存空间。
1 | class A { |
该方法不是最佳的做法,因为在类的对象复制时,程序会出现同一块内存空间释放两次的情况。
在一个函数内创建两个类的对象,让一个对象等于另一个对象。在离开函数作用域的时候,将会调用两次析构函数来释放空间,但是两个对象指向同一块内存,所以同一块内存就被释放了两次。** 可以通过增加计数机制来避免这种情况**;
2、智能指针
智能指针是 C++ 中已经对内存泄漏封装好了一个工具,可以直接拿来使用。可以自己计数。