问题标签 [reference-counting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - cpython 做什么来帮助检测对象循环(引用计数)?
从我读过的关于 cpython 的内容来看,它似乎确实引用计数 + 一些额外的东西来检测/释放指向彼此的对象。(如果我错了,请纠正我)。有人可以解释一下额外的东西吗?这也保证*没有循环泄漏吗?如果没有,是否有任何研究证明可以添加到引用计数以使其永不泄漏*的算法?这会只是经常运行非引用计数跟踪 gc 吗?
*折扣使用外部函数接口的模块的错误和问题
delphi - 为什么我的 Delphi 对象没有调用 _AddRef 和 _Release?
我真的很困惑。
它应该显示 1,但它显示 0。无论我们将执行多少次分配,值都不会改变!为什么不?
python - Python 引用计数和 ctypes
你好,
我在理解 python 引用计数时遇到了一些麻烦。我想要做的是使用 ctypes 模块将一个元组从 c++ 返回到 python。
C++:
Python:
我不确定 obj 的引用计数,所以我尝试sys.getrefcount()
并得到了3
. 我认为应该是2
(这些getrefcount
函数本身就是一个 ref)。
现在我不能Py_DECREF()
在 C++ 中返回,因为对象被删除了。我可以减少python中的引用计数吗?
编辑 调用 cast 函数时,引用计数会发生什么?从下面的文档中我不太确定。http://docs.python.org/library/ctypes.html#ctypes.cast
ctypes.cast(obj, type) 这个函数类似于 C 中的 cast 运算符。它返回一个新的 type 实例,该实例指向与 obj 相同的内存块。type 必须是指针类型,obj 必须是可以解释为指针的对象。
iphone - Objective C [对象发布]
我正在查看其他人的代码,但它似乎是 RELEASE 对象 VIDEO 但随后继续使用它。
现在根据我对面向对象编程语言的理解,一旦它被发布,它应该从内存中释放......
我看不出它有什么参考资料……但我假设这就是它没问题的原因。似乎是一件奇怪的事情,(当你没有完成它时释放它,例如为什么不使用自动释放)。
c++ - 在 c++ 中使用 enable_shared_from_this 时检查现有的 shared_ptr?
除了捕获尝试在作为原始指针的指针上调用 shared_from_this() 时引发的 bad_weak_ptr 错误之外,还有没有办法测试对象是否被引用计数?
我有处理原始指针和共享指针的函数,我想确保在使用错误指针时错误很明显?我当然可以抓住错误,但我只是想知道是否有一种简单的方法可以测试这种特殊情况?
qt - Qt 原子操作实现
我一直在尝试找到 Qt 的引用计数在何处以及如何实现。QBasicAtomicInt 和 QAtomicInt 使用 ref() 和 deref() 函数,它们提供了一个高效的引用计数 API。这些函数以原子方式递增和递减值,但这些函数在库中的何处实现?我试图了解 Qt 究竟是如何实现原子引用计数的。谢谢你。
algorithm - 收集循环的引用计数的最简单增强是什么?
单独的引用计数不会收集循环,但还有其他技术也可以收集循环。这种最简单的技术是什么?
我想将增强引用计数与跟踪 GC 的复杂性进行比较。
objective-c - Objective-C 中的引用计数注意事项?
长期以来,我一直认为自己是一个垃圾收集势利小人——尽管对 C++ 有着秘密的热爱,但我发现自己在嘲笑那些积极选择使用没有(阅读:缺失)垃圾收集的语言的开发人员。
然后我遇到了Objective-C。哇!它的引用计数系统看起来非常简单——我什至可以说是优雅的。在为 OSX 开发时,开发人员可以选择使用时髦的 GC;在为 iOS 开发时,开发人员被引用计数困住了。
我的问题是:
如果我正在开发一个可能被移植到 iOS 的 OSX 应用程序,Objective-C 的引用计数系统是否足够耗时(开发方面和错误修复方面)以保证在应用程序的第一个版本中忽略它?
如果我依赖引用计数*,我可能会遇到什么问题,假设我不够聪明,无法构建任何极其复杂的循环数据结构?有了类似的功能autorelease
,这一切看起来都那么简单,但我知道如果真的是这样,Apple 就不会投入精力来创建垃圾收集器。我应该注意什么?
* 我知道我可以使用垃圾收集器,即使我扔掉retain
s 和release
s(它们会被忽略)。但是,考虑到非 GC 应用程序经常使用RAII,我不明白如果分代 GC 要“替换”对retain
and的调用,那将如何工作release
。资源不会延迟释放吗?
reference-counting - 使用 RefCounted!(T) 在 D 中创建引用计数对象
你如何std.typecons.RefCounted!(T)
在 D 中创建一个引用计数的对象?
我试图通过查看源代码来弄清楚std.array.Array
内部是做什么的,但是虽然我可以阅读源代码,但我只是无法弄清楚“有效负载”是什么,或者当涉及到按位结构复制之类的事情时它是如何工作的,以及为什么有些东西在内部和外部结构中是重复的。
谁能提供一个示例或链接来说明如何使用它来包装一个简单的 Win32 HANDLE
?
谢谢!
c++ - boost::shared_?? 对于非指针资源
基本上我需要对不直接等同于指针/地址语义的某些资源(如整数索引)进行引用计数;基本上我需要传递资源,并在计数达到零时调用某些自定义函数。此外,对资源的读/写访问不是简单的指针取消引用操作,而是更复杂的操作。我不认为 boost::shared_ptr 适合这里的账单,但也许我错过了我可能使用的其他一些 boost 等效类?
我需要做的例子: