gpt4 book ai didi

c++ - 为什么 C++ 没有垃圾收集器?

转载 作者:IT老高 更新时间:2023-10-28 11:25:17 31 4
gpt4 key购买 nike

我之所以问这个问题,首先是因为垃圾收集的优点。我问这个的主要原因是我知道 Bjarne Stroustrup 说过 C++ 将在某个时间点有一个垃圾收集器。

话虽如此,为什么没有添加?已经有一些用于 C++ 的垃圾收集器。这只是那些“说起来容易做起来难”的事情之一吗?还是有其他原因没有添加(C++11不会添加)?

交叉链接:

澄清一下,我理解 C++ 最初创建时没有垃圾收集器的原因。我想知道为什么无法添加收集器。

最佳答案

可以添加隐式垃圾收集,但它没有成功。可能不仅是因为实现的复杂性,还因为人们无法足够快地达成普遍共识。

引用 Bjarne Stroustrup 本人的话:

I had hoped that a garbage collectorwhich could be optionally enabledwould be part of C++0x, but there wereenough technical problems that I haveto make do with just a detailedspecification of how such a collectorintegrates with the rest of thelanguage, if provided. As is the casewith essentially all C++0x features,an experimental implementation exists.

话题讨论不错here .

一般概述:

C++ 非常强大,几乎可以让您做任何事情。出于这个原因,它不会自动将许多可能影响性能的东西推给您。垃圾回收可以很容易地用智能指针(用引用计数包装指针的对象,当引用计数达到 0 时自动删除自己)实现。

C++ 在构建时考虑了没有垃圾收集的竞争对手。与 C 和其他语言相比,效率是 C++ 必须抵御批评的主要问题。

有两种类型的垃圾回收...

显式垃圾回收:

C++0x 通过 shared_ptr 创建的指针进行垃圾回收

如果你想要它,你可以使用它,如果你不想要它,你不会被强制使用它。

对于 C++0x 之前的版本,boost:shared_ptr 存在并且用于相同的目的。

隐式垃圾回收:

虽然它没有透明的垃圾收集。不过,它将成为 future C++ 规范的焦点。

为什么 Tr1 没有隐式垃圾回收?

C++0x 的 tr1 应该有很多东西,Bjarne Stroustrup 在之前的采访中表示 tr1 没有他想要的那么多。

关于c++ - 为什么 C++ 没有垃圾收集器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/147130/

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