m0_46478585 2020-03-05 19:16 采纳率: 0%
浏览 99

将指针数据释放 它所指向的 堆区数据也会被释放?

我知道这段代码错在哪里 就是堆区 数据的 重复释放 但有个疑问 释放的不是m_age吗 它是个指针将它释放了 它指向的数也会被释放是吗 我感觉我可能对指针理解不够 透彻 能详细讲讲吗图片说明

  • 写回答

1条回答 默认 最新

  • 写c++的蒟蒻 2024-02-17 13:36
    关注

    问题出在浅拷贝上。你没有写该对象的拷贝构造函数,所以生成p2对象时系统自动的拷贝构造函数会使p2和p1的指针指向同一个位置,所以就会释放两次。
    解决方案写一个深拷贝:

    Person(const Person& temp)
    {
    this->m_age=new int(*(temp.m_age));
    };
    
    评论

报告相同问题?