13得票2回答
在不模拟循环数据结构的单线程应用程序中,何时需要使用引用计数?

Rust可以通过Rc非常优雅地处理引用计数。似乎社区的许多成员更喜欢使用语言的所有权/借用语义而不是使用Rc。这样编写的程序更简单,但除了循环引用之外,是否有必要呢? 显然,在跨线程方面,情况变得更加复杂。因此,为了简化我试图学习的内容,"在单线程应用程序中,除了作为编写时优化之外,...

48得票6回答
为什么纯函数式语言不使用引用计数?

在纯函数式语言中,数据是不可变的。使用引用计数时,创建一个引用循环需要更改已经创建的数据。看起来纯函数式语言可以使用引用计数而不必担心可能会出现循环引用。这是对的吗?如果是,为什么它们没有使用引用计数? 我知道在许多情况下,引用计数比GC慢,但至少它减少了暂停时间。在暂停时间较长的情况下,有...

10得票2回答
在AVL树中处理重复键

我想让我的avl树支持重复的键,但是默认的二叉搜索树在处理重复键时存在问题,因为旋转操作可能会导致具有相同键的节点位于其父节点的左右两侧。 例如,当添加三个具有键A的节点时,树会执行旋转操作,使其变成以下结构: A / \ A A 因此,获取该键的所有条目将是一个问题.....

21得票2回答
有没有一种方法可以将shared_ptr<void>转换为shared_ptr<T>?

我希望保留std::shared_ptr的智能行为。那么有没有一种方法可以将一个共享的空指针转换为另一种类型而不会影响引用计数?我不能获取原始指针并从中创建一个新的共享指针。

9得票5回答
Java中的垃圾回收

在我正在复习的幻灯片上写着以下内容: 活动对象可以通过维护每个对象引用计数或跟踪从根引用的链来识别。 引用计数很昂贵-它需要在每次引用更改时采取行动,并且它无法发现循环结构,但它可以逐步回收空间。 跟踪涉及仅在需要回收空间时才识别活动对象-将成本从一般访问移动到GC运行的时间,通常仅在内存不...

7得票1回答
ctypes - 从C到Python对象的引用

我正在使用ctypes在Python中使用一个C库。有一个回调函数,其中包含一个void*参数,我将其用作ctypes.py_object。对象指针在注册回调时提供给库。但是,当它不再被Python代码引用时,应该被销毁。我希望它能一直存活,直到调用回调函数。我该如何做? callback_...

15得票6回答
值类型引用循环?

在Swift中,当引用类型的属性彼此之间(或与闭包一起)拥有强烈的所有权时会发生引用循环。 然而,仅限于值类型是否存在引用循环的可能性? 我在playground中尝试过,但没有成功(错误:不允许递归值类型'A')。struct A { var otherA: A? = nil ...

42得票4回答
使用ARC的优缺点是什么?

使用新的自动引用计数 (ARC) 内存管理风格在 iOS 项目中有什么优缺点? 在使用 iOS 5.0 SDK 进行开发时,您是否可以选择不使用 ARC? 对于一个新项目,您推荐使用 ARC 还是手动引用计数 (MRC)? 使用 ARC 的应用程序能否在早于 iOS 5.0 的旧操作系统...

67得票4回答
如何强制删除一个Python对象?

我对Python中的__del__细节很好奇,什么时候以及为什么要使用它,以及它不应该用于什么。我已经通过艰难的方式学到了,它并不像一个析构函数那样被天真地期望,因为它不是__new__ / __init__的相反操作。class Foo(object): def __init__(...

8得票3回答
将字面字符串赋值给NSString使用"="号实际上是做什么?

以下这行代码实际上是做什么的? string = @"Some text"; 假设“string”在头文件中这样声明: NSString *string; 在这里,"="实际上是做什么的?它对"string"的引用计数有什么影响吗?特别是,假设由于某种原因没有将"string"...