reference-counting相关内容

简单引用计数:智能指针

我想使用智能指针实现一个简单的引用计数。变量pointer表示指向存储对象的指针,reference_count表示对象副本的总数。 如果我们使用NULL初始化对象:Reference_count=-1否则Reference_Count=1 COPY CTOR AND OPERATOR=INCREMENT REFERENCE_COUNT 析构函数递减Reference_count,如果没 ..
发布时间:2022-08-26 13:31:59 C/C++开发

CPython3.6中函数参数的引用计数

为了查明传递给函数的参数是“临时的”(仅传递到函数中)还是在外部引用的,我使用Py_REFCNT。这是在一个C扩展包中完成的,但为了更容易重现,我决定在这里提供一个基于IPython Magic的Cython实现。 在CPython3.5和CPython3.6之间,接受多个参数的函数似乎有些变化(对于只接受一个参数的函数,它仍然可以正常工作): In [1]: %load_ext cy ..
发布时间:2022-03-25 21:26:05 Python

python中的引用循环是什么?

我查看了 python 的官方文档,但我似乎找不到参考循环是什么.任何人都可以澄清它对我来说是什么,因为我正在尝试理解 GC 模块.提前感谢您的回复. 解决方案 引用循环仅仅意味着一个或多个对象相互引用,这样如果你在纸上用箭头表示依赖关系,你会看到一个循环. (几乎)最简单的引用循环是有两个对象 a 和 b 相互引用: a.other = bb.some_attr = a 天真的 ..

为什么 C# 中没有引用计数 + 垃圾回收?

我来自 C++ 背景,我已经使用 C# 工作了大约一年.像许多其他人一样,我对为什么确定性资源管理没有内置在语言中感到困惑.我们有 dispose 模式,而不是确定性析构函数.人们开始怀疑通过他们的代码传播 IDisposable 癌症是否值得付出努力. 在我偏向 C++ 的大脑中,使用带有确定性析构函数的引用计数智能指针似乎是垃圾收集器的一大进步,垃圾收集器需要您实现 IDisposabl ..
发布时间:2022-01-16 09:51:23 C#/.NET

使用 ARC 的优缺点是什么?

在 iOS 项目中使用新的自动引用计数 (ARC) 内存管理样式有哪些优点和缺点? 在使用 iOS 5.0 SDK 进行开发时,是否可以选择不使用 ARC? 对于新项目,您建议使用 ARC 还是手动引用计数 (MRC)? 使用 ARC 的应用程序能否在比 iOS 5.0 更早的操作系统版本上运行? 解决方案 在 iOS 项目中使用新的自动引用计数 (ARC) 内存管理 ..

如何强制删除python对象?

我很好奇python中__del__的细节,什么时候以及为什么应该使用它,不应该使用它做什么.我已经艰难地了解到它并不像人们天真地期望从析构函数中得到的那样,因为它不是 __new__/__init__ 的对立面. class Foo(object):def __init__(self):self.bar = 无定义打开(自我):如果 self.bar != 'open':打印“打开酒吧"sel ..

初始化属性,点符号

在我的 init 方法中使用点表示法将保留属性初始化为 nil 是不是一个坏主意? 对于任何像这样的普通属性: @property (nonatomic, retain) id foo; 说在我的 init 方法中我设置了 self.foo = nil.合成方法首先发布或自动发布 foo(不完全确定底层实现).foo 是否保证在第一次 setter 或 getter 调用之前为零?或者它 ..

调用 -retainCount 被认为是有害的

或者,为什么我在暑假时没有使用 retainCount 这篇文章旨在征集关于那个臭名昭著的方法 retainCount 的原因和原因的详细文章,以整合围绕 SO 的相关信息.* 基础知识:不使用 retainCount 的官方原因是什么?有没有什么情况根本可能有用?应该怎么做?** 随意编辑. 历史/解释:为什么 Apple 在 NSObject 协议 如果不打算使用它?Appl ..
发布时间:2021-12-02 18:07:13 移动开发

原子引用计数

我试图确切地了解线程安全的原子引用计数是如何工作的,例如与 std::shared_ptr 一样.我的意思是,基本概念很简单,但我真的很困惑 decref 加 delete 如何避免竞争条件. 这个来自Boost的教程演示如何使用 Boost 原子库(或 C++11 原子库)实现原子线程安全引用计数系统. #include #include X级{民众:typedef boost::int ..
发布时间:2021-11-30 14:56:55 C/C++开发

C++/CX WinRT 指针引用计数的线程安全

鉴于用例,我的印象是对 WinRT 对象的引用计数是线程安全的.但是我遇到了一个错误,我不知道有任何其他方法可以解释.例如,以下代码崩溃得非常快: ref 类 C 密封 {民众:C() { }虚拟 ~C() {}};[Windows::Foundation::Metadata::WebHostHidden]公共引用类 MainPage 密封 {民众:MainPage() : _latest(nu ..
发布时间:2021-09-26 20:50:57 其他开发

VS 2013 Ultimate 中的 Codelens 引用不正确

我不确定这是设计使然还是需要在 VS 2013 Ultimate 中启用/禁用功能,但 codelens 生成的引用计数完全不正常.它没有显示直接引用特定类/方法的类/方法的计数,而是显示整个解决方案中与类/方法同名的所有内容的计数. 例如,假设我的解决方案中有四个类(四个项目每个类中有一个类无关紧要). 使用系统;使用 System.Collections.Generic;使用 Syst ..
发布时间:2021-09-19 18:55:31 其他开发

何时使用 Rc 与 Box?

我有以下代码,它同时使用了 Rc 和 Box;那些有什么区别?哪个更好? 使用 std::rc::Rc;fn 主(){让 a = Box::new(1);让 a1 = &a;让 a2 = &a;让 b = Rc::new(1);让 b1 = b.clone();让 b2 = b.clone();println!("{} {}", a1, a2);println!("{} {}", b1, b2) ..
发布时间:2021-07-13 20:35:48 其他开发

为什么 Python Ref Counts 到小整数出奇的高?

在 this 答案我找到了一种在 Python 中获取对象引用计数的方法. 他们提到使用 sys.getrefcount().我试过了,但得到了意想不到的结果.当有 1 个引用时,似乎计数为 20.这是为什么呢? 我查看了文档,但它没有t似乎解释了原因. 解决方案 在第一次 sys.getrefcount 调用时,这个对象恰好有 20 个对它的引用.这不仅仅是您创建的参考;在其 ..
发布时间:2021-06-28 19:33:23 Python

PHP null 和写时复制

假设我想要两个变量,并且它们都等于 null.(更现实地说,我正在考虑一个包含大量 null 的数组,但“两个变量"场景足以解决这个问题.)显然,我可以在多个中做到这一点办法.我可以这样做(方法 1): $a = null;$b = $a; 据我所知,这样做的结果是符号表中的两个条目指向一个 zval:'a' 和 'b'.但也可以这样做(方法 2): $a = null;$b = 空; 天 ..
发布时间:2021-06-10 18:40:00 PHP

在Inversify.js中重置作用域容器

我正在实现一个有范围的容器体系结构,以便为每个Express请求(或apollographgraphl请求)创建一个新的 container .我有一个生命周期方法,可以在完成发送响应后调用它,这对于清理和释放内存很有用,并且该方法可以引用我们已完成服务的请求的上下文.在该 context 中,我引用了我之前创建的 inversifyjs容器,因此我可以在cleanup方法中引用该 contain ..