您当前的位置: 首页 >  c++

RuiH.AI

暂无认证

  • 6浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 十四、类的进阶(5)动态内存

RuiH.AI 发布时间:2022-02-19 16:38:04 ,浏览量:6

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             
关注
打赏
1658651101
查看更多评论
0.2953s