gpt4 book ai didi

c# - 将 shared_ptr 与托管语言引用进行比较

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:51 26 4
gpt4 key购买 nike

有人可以向 C++ 程序员解释 Java(以及 C#)引用和 shared_ptr(来自 Boost 或 C++0x)之间最重要的区别。

我或多或少知道 shared_ptr 是如何实现的。我很好奇以下方面的差异:

1) 性能。2)骑自行车。 shared_ptr 可以循环(A 和 B 持有指向彼此的指针)。在 Java 中可以骑自行车吗?3) 还有什么吗?

谢谢。

最佳答案

性能:shared_ptr 性能不错,但根据我的经验,它的效率略低于显式内存管理,主要是因为它是引用计数的,并且必须分配引用计数以及。它的性能如何取决于很多因素,它与 Java/C# 垃圾收集器相比的性能如何只能根据每个用例来确定(取决于语言实现等因素)。

循环只能用weak_ptr,不能用两个shared_ptr。 Java 允许毫不费力地循环;它的垃圾收集器将 break the cycles .我的猜测是 C# 会做同样的事情。

Anything else:shared_ptr 指向的对象在最后一次引用超出范围后立即销毁。立即调用析构函数。在 Java 中,可能不会立即调用终结器。我不知道 C# 在这一点上的表现如何。

关于c# - 将 shared_ptr 与托管语言引用进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570832/

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