关于C++中的垃圾回收
About Garbage collection in C++
我正在阅读有关垃圾回收器模式的文章。有人提到,这种体系结构模式通过有效地消除内存泄漏和悬空指针,消除了绝大多数与内存相关的问题。
我知道使用垃圾回收器可以消除内存泄漏,但垃圾回收器如何解决悬挂指针的问题?请给我一个例子,说明如何使用垃圾收集器来解决悬挂指针的问题,假设我使用标记和扫描算法来实现它。
谢谢!
悬挂指针的问题是间接处理的:在GC环境中,只有当没有指向对象的指针时,对象才会被删除,因此,在任何情况下都不会删除它,因为它会留下悬挂指针。也就是说,根本不会有悬空指针,问题也不会发生。
当您在它的寿命结束了。这种情况可能发生在返回函数或使用释放内存块后的地址。以下内容代码片段显示:
class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1 = 10;
SomeFunc(s1);
s1.PrintVal();
}
在上面的例子中,当PrintVal()函数为调用的指针调用它SomeFunc中的析构函数。
相关文章:
- 一个关于在C++中重载布尔运算符的问题
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 关于std::move的使用,是否有编译警告
- 关于简单C++函数(is_palindrome)的逻辑的问题
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 关于C++中具有多重继承"this"指针的说明
- 关于 c++ 函数中指针赋值的简单问题
- 关于 std::min, std::max 中的比较运算符的混淆
- 这是关于成员访问规则的正确摘要吗
- C++ 关于指针取消引用的技术问题
- std::is_trivially_copyable_v 关于虚拟功能
- 关于指向指针数组的指针
- 关于复制构造函数的一个棘手问题
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 关于类的 Python 文档 - 对C++的引用不正确
- 关于 C++ 中的函数类型定义
- 关于条件块的问题与&&运算符有关
- 关于如何使用指向主窗口的指针的 QT 问题
- [temp.variadic]中关于包扩展实例化的措辞