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

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

20得票10回答
能否拦截(或知道)暴露给COM的CLR对象的COM引用计数?

我已经重新表述了这个问题。 当通过COM互操作将.NET对象暴露给COM客户端时,会创建一个CCW(COM可调用包装),它位于COM客户端和托管的.NET对象之间。 在COM世界中,对象保留其他对象对其的引用计数。当该引用计数降为零时,对象被删除/释放/收集。这意味着COM对象终止是确定性...

20得票2回答
用于智能指针(intrusive_ptr)的抽象基类 - 处理继承、多态、可克隆性和从工厂方法返回的问题。

要求 I am writing a class called RCObject, which stands for "Reference Counted Object"; The class RCObject should be abstract, serving as the base ...

20得票7回答
为什么垃圾收集器在释放内存之前要等待?

我有一个关于垃圾回收的“它为什么要那样工作?”问题(任何/所有实现:Java、Python、CLR等)。垃圾回收器在对象不再处于任何作用域时将其取消分配,指向该对象的引用数量为零。我认为一个框架可以在引用计数达到零时立即取消分配,而不是我遇到的所有实现都会等待一段时间,然后同时取消分配许多对象...

18得票5回答
ARC和自动释放池

autorelease用于返回函数对象,以便调用者不掌握该对象的所有权,而被调用者将在未来释放该对象。 然而,ARC能够计算调用方的所有权并在使用后释放它,它可以像C++中的智能指针一样工作。通过使用ARC,可以摆脱autorelease,因为autorelease是不确定性的。 我提出这...

18得票3回答
原文:Is atomic decrementing more expensive than incrementing? 翻译:原子性地递减比递增更昂贵吗?

在他的Herb Sutter博客中写道:“因为在优化的shared_ptr实现中,智能指针引用计数的递增通常可以被优化为与普通递增相同 - 只是普通的递增指令,而没有屏障,在生成的代码中。” 然而,“递减必须是原子递减或等效的,这会生成更昂贵的特殊处理器内存指令,它们本身就会诱发内存栅栏限制...

17得票8回答
如何解决PHP中的内存泄漏问题

我的PHP应用程序有一个导入脚本,可以导入记录。 目前,它正在从CSV文件中导入。它使用fgetcsv逐行读取CSV文件,并为每一行执行大量的处理,包括数据库查询,然后继续下一行。 它不需要保留累积更多的内存。 导入了大约2500条记录后,PHP死机,因为已超出其内存限制(约132 MB)...

17得票6回答
是否存在像TInterfacedObject一样的非引用计数基类?

我需要一个基类,类似于TInterfacedObject,但不包含引用计数(类似于TNonRefCountedInterfacedObject)。 实际上这已经是我第n次需要这样一个类了,但我总是不断地重新编写我的代码(即复制并粘贴)。我无法相信没有官方的基类可供使用。 在RTL中是否有一...

16得票1回答
为什么这个字符串的引用计数是4?(Delphi 2007)

这是一个非常特定于Delphi(甚至可能是特定于Delphi 2007)的问题。我目前正在编写一个简单的字符串池类来池化字符串。作为一名优秀的程序员,我还添加了单元测试,并发现了一些困惑我的事情。 下面是实现字符串池化的代码:function TStringPool.Intern(const...

16得票13回答
有哪些解决循环引用的方案?

当使用引用计数时,处理循环引用的可能解决方案/技术有哪些? 最为人所知的解决方案是使用弱引用,然而许多与此主题相关的文章表明还有其他方法,但它们不断重复弱引用的示例。这让我想知道,这些其他方法是什么? 我并不是在询问替代引用计数的方案,而是在使用引用计数时解决循环引用的方案。 这个问题不...