小编Sha*_*r G的帖子

C++如何在没有其他人直接或间接引用该指针时删除对象指针

我有一个对象O1,它有指针.我通过复制构造函数创建了另一个对象O2.指针地址将被复制到对象O2中.当我离开O2的范围时,它将被删除.析构函数也将删除指针.这使得对象O1中的指针变得悬空.如何确保只有当我从O1出来时才删除指针.

在简短描述中,仅当没有其他人直接或间接引用该指针时,如何删除该对象指针.

class info {
    public:
        char *buf;
        int len;
        info(int l) {
            len = l;
            buf = new char[len];
            buf[0] = 'h';
        }
        ~info() {
            delete[] buf;
        }
};
int main() {
    info O1(100);
    cout << O1.buf << "\n";
    {
        info O2(O1);
    }
    cout << O1.buf << "\n";
}
Run Code Online (Sandbox Code Playgroud)

这里主要结尾处的O1的析构函数将获得一个SIGABT信号,用于尝试释放已经通过O2删除的O1.buf引用的内存.

c++ pointers

0
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1

pointers ×1