![]() |
1
10
给出一个指针(
它不会在对象的成员变量中搜索其他指向空闲的指针;它不会释放任何其他内存,也不会执行任何其他操作。
如果你需要释放
然而,在几乎所有的C++代码中,你不必担心这一点。你应该使用像这样的智能指针
这是一个更广泛的习惯用法的一部分,范围限制资源管理(SBRM,也称为资源获取是初始化,或RAII)。这是迄今为止理解和使用C++代码中最重要的设计模式。 如果在你的班级里你已经声明了这一点:
然后当
在编写良好的现代C++代码时,您很少需要手动使用。
在第二个示例中,给出一个如下所示的链接列表:
您的操作顺序如下:
链接列表中的对象将按相反的顺序销毁。 |
![]() |
2
1
我想
是的,我知道,
另外,你应该遵循 Rule of Three . 定义自己的析构函数,但依赖于隐式定义的复制构造函数和复制分配运算符,这是一个灾难的秘诀。 |
![]() |
Alexey S. Larionov · new[]是否连续分配内存? 7 年前 |
![]() |
Dawit · 无法创建typescript类对象 7 年前 |
![]() |
rtischer8277 · 堆分配在用户DLL/EXE中失败 7 年前 |
![]() |
Play4u · 为什么运算符“new”需要指向work的指针? 7 年前 |
![]() |
CDZ · “new operator”将另一个类实例化为工厂? 7 年前 |
![]() |
Aman Warudkar · 析构函数是如何执行的? 8 年前 |
![]() |
Swapnil · 新操作符如何知道需要为特定类分配多少大小 8 年前 |
![]() |
sestus · 在另一个类中执行删除时出现Valgrind错误 9 年前 |