为什么C++11允许GC? [已关闭]

问题描述 投票:0回答:1

SO是一场狗屎秀。感谢您的搭车。

c++ c++11 garbage-collection
1个回答
5
投票

C++11 标准并不要求 GC 存在,但在未来的版本中可能会存在。

它不会强加于你——只有当你要求时它才会存在。它不会收集您的普通指针,也不会收集当前的智能指针。所以,它仍然是“不使用 - 不付费”。它只会对您明确要求的指针起作用,因此您的示例仍然会像现在一样工作。

参见 Sutter’s Mill:垃圾收集概要和 C++

引用计数 (#1) 通常是最好的,并且它是 C++ 的默认值 GC 的形式。但也有理由(而不是相反)想要懒惰 C++ 中的标记-清除 (#2) 垃圾回收来处理 ref 计数无法处理,包括潜在周期的情况 不可避免的(在某些情况下,某些对象可能自然地被共享, 但随后可能会互相引用)和无锁 ABA 问题。

通过“引用计数”,Sutter 指的是

std::shared_ptr
和类似的东西。

© www.soinside.com 2019 - 2024. All rights reserved.