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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?