gpt4 book ai didi

c++ - 指针复制到另一个指针时如何工作

转载 作者:行者123 更新时间:2023-11-28 04:23:38 26 4
gpt4 key购买 nike

大家好。

#include <bits/stdc++.h> 
using namespace std;

int main()
{

int* ptr1 = new int;

int* ptr2 = ptr1;

delete ptr2; // Detroying ptr2

return 0;
}

在上述情况下,ptr1 使用的内存将被释放,还是仅 ptr2 将被销毁。我还有一个疑问。我有一种树结构,其中节点指向两个 child (这些 child 有叶节点,考虑它是一棵大树)。如果我必须删除根节点的一个 child ,我是否需要删除孙子,孙子等的每个指针对象?提前致谢?

最佳答案

ptr2 和 ptr1 指向的 int 都将被释放。 delete 运算符释放指针指向的对象,而不是指针本身。 (指针在删除后仍然存在,但它们现在是“悬挂指针”,指向不再属于您的内存)

至于删除树结构,是的,你需要递归删除,一直到叶子。通常,这是在节点类的析构函数方法内部完成的,并且非常简单(只需在每个直接子节点上调用 delete,这将导致它们的析构函数方法执行并删除它们的每个子节点,等等)

关于c++ - 指针复制到另一个指针时如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54937981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com