C++学习 十四、类的进阶(5)动态内存
前言
- 前言
- 类与动态内存
- 动态内存与析构函数
- 类的特殊成员函数
- 默认构造函数
- 默认析构函数
- 复制构造函数
- 默认复制构造函数
- 复制构造函数,浅拷贝和深拷贝
- 赋值运算符
- 上述示例代码
- 后记
本片继续类的进阶学习,动态内存。
类与动态内存动态内存与类的关系主要有两种:使用动态内存存储对象,对象开辟动态内存。
第一类,使用className objectPointer = new className;
分配动态内存,然后使用delete objectPointer;
释放内存。
第二类,构造函数中使用new
开辟一块动态内存,在析构函数中使用delete
。
第二类非常容易出现内存泄露问题,也是本篇的核心问题。
动态内存与析构函数在类基础篇中提到,析构函数用于销毁对象释放空间。然而,默认析构函数只能释放对象本身占用的内存(即成员的内存),不能自动释放对象的指针成员指向的内存。
因此,如果在构造函数使用new
开辟了一块动态内存,必须在析构函数中使用delete
释放该内存,否则就会内存泄漏:
#include
#include
#include
using std::ostream;
class A{
private:
char* str_;
public:
A();
A(const char*);
~A();
int len();
char* get();
};
A::A(){
str_ = new char [14];
strcpy(str_, "Hello, World!");
std::cout
关注
打赏