reference-counting相关内容
我想使用智能指针实现一个简单的引用计数。变量pointer表示指向存储对象的指针,reference_count表示对象副本的总数。 如果我们使用NULL初始化对象:Reference_count=-1否则Reference_Count=1 COPY CTOR AND OPERATOR=INCREMENT REFERENCE_COUNT 析构函数递减Reference_count,如果没
..
为了查明传递给函数的参数是“临时的”(仅传递到函数中)还是在外部引用的,我使用Py_REFCNT。这是在一个C扩展包中完成的,但为了更容易重现,我决定在这里提供一个基于IPython Magic的Cython实现。 在CPython3.5和CPython3.6之间,接受多个参数的函数似乎有些变化(对于只接受一个参数的函数,它仍然可以正常工作): In [1]: %load_ext cy
..
我查看了 python 的官方文档,但我似乎找不到参考循环是什么.任何人都可以澄清它对我来说是什么,因为我正在尝试理解 GC 模块.提前感谢您的回复. 解决方案 引用循环仅仅意味着一个或多个对象相互引用,这样如果你在纸上用箭头表示依赖关系,你会看到一个循环. (几乎)最简单的引用循环是有两个对象 a 和 b 相互引用: a.other = bb.some_attr = a 天真的
..
我来自 C++ 背景,我已经使用 C# 工作了大约一年.像许多其他人一样,我对为什么确定性资源管理没有内置在语言中感到困惑.我们有 dispose 模式,而不是确定性析构函数.人们开始怀疑通过他们的代码传播 IDisposable 癌症是否值得付出努力. 在我偏向 C++ 的大脑中,使用带有确定性析构函数的引用计数智能指针似乎是垃圾收集器的一大进步,垃圾收集器需要您实现 IDisposabl
..
在 iOS 项目中使用新的自动引用计数 (ARC) 内存管理样式有哪些优点和缺点? 在使用 iOS 5.0 SDK 进行开发时,是否可以选择不使用 ARC? 对于新项目,您建议使用 ARC 还是手动引用计数 (MRC)? 使用 ARC 的应用程序能否在比 iOS 5.0 更早的操作系统版本上运行? 解决方案 在 iOS 项目中使用新的自动引用计数 (ARC) 内存管理
..
一个简单的问题. 如果我有一个属性和一个用相同名称声明的 ivar: 在 .h 文件中: (Reminder*)reminder;@property(nonatomic,strong)(提醒*)提醒; 在 .m 文件中,如果我使用 ARC,我应该使用 ivar 还是 init 方法中的属性? - (id)initWithReminder:(Reminder*)reminder_
..
我真的很困惑. //初始类类型TTestClass =类(TInterfacedObject)结尾;{...}//测试程序程序 testMF();var c1, c2 : TTestClass;开始c1 := TTestClass.Create();//创建,添加引用c2 := c1;//地址c1 := 零;//引用计数 - 1MessageBox( 0, pchar( inttostr( c2
..
我很好奇python中__del__的细节,什么时候以及为什么应该使用它,不应该使用它做什么.我已经艰难地了解到它并不像人们天真地期望从析构函数中得到的那样,因为它不是 __new__/__init__ 的对立面. class Foo(object):def __init__(self):self.bar = 无定义打开(自我):如果 self.bar != 'open':打印“打开酒吧"sel
..
我正在尝试使用 Arc 在 Rust 中的线程之间共享一个可变对象,但出现此错误: error[E0596]: 不能将 `&` 引用中的数据借用为可变的-->src/main.rs:11:13|11 |shared_stats_clone.add_stats();|^^^^^^^^^^^^^^^^^^ 不能借为可变 这是示例代码: use std::{sync::Arc, thread};f
..
在我的 init 方法中使用点表示法将保留属性初始化为 nil 是不是一个坏主意? 对于任何像这样的普通属性: @property (nonatomic, retain) id foo; 说在我的 init 方法中我设置了 self.foo = nil.合成方法首先发布或自动发布 foo(不完全确定底层实现).foo 是否保证在第一次 setter 或 getter 调用之前为零?或者它
..
或者,为什么我在暑假时没有使用 retainCount 这篇文章旨在征集关于那个臭名昭著的方法 retainCount 的原因和原因的详细文章,以整合围绕 SO 的相关信息.* 基础知识:不使用 retainCount 的官方原因是什么?有没有什么情况根本可能有用?应该怎么做?** 随意编辑. 历史/解释:为什么 Apple 在 NSObject 协议 如果不打算使用它?Appl
..
我试图确切地了解线程安全的原子引用计数是如何工作的,例如与 std::shared_ptr 一样.我的意思是,基本概念很简单,但我真的很困惑 decref 加 delete 如何避免竞争条件. 这个来自Boost的教程演示如何使用 Boost 原子库(或 C++11 原子库)实现原子线程安全引用计数系统. #include #include X级{民众:typedef boost::int
..
我有一个 Xamarin.iOS Classic 项目并将其迁移到统一 API. 我的代码中有一个视图控制器(简化版): 公共类 TestViewController : UIViewController{私有弱引用_viewRef;公共覆盖无效 ViewDidLoad(){base.ViewDidLoad();_viewRef = new WeakReference(View);开始定时
..
鉴于用例,我的印象是对 WinRT 对象的引用计数是线程安全的.但是我遇到了一个错误,我不知道有任何其他方法可以解释.例如,以下代码崩溃得非常快: ref 类 C 密封 {民众:C() { }虚拟 ~C() {}};[Windows::Foundation::Metadata::WebHostHidden]公共引用类 MainPage 密封 {民众:MainPage() : _latest(nu
..
我不确定这是设计使然还是需要在 VS 2013 Ultimate 中启用/禁用功能,但 codelens 生成的引用计数完全不正常.它没有显示直接引用特定类/方法的类/方法的计数,而是显示整个解决方案中与类/方法同名的所有内容的计数. 例如,假设我的解决方案中有四个类(四个项目每个类中有一个类无关紧要). 使用系统;使用 System.Collections.Generic;使用 Syst
..
当计数为 1 时,有没有办法从 Rc 移动对象?我正在考虑如何实施: fn take_ownership(共享:Rc)->结果 T,Rc T .{ ... } 语义是,如果计数为 1,您将获得 T,否则您将返回 shared,以便您稍后再试. 解决方案 标准库提供了 Rc::try_unwrap 函数: fn try_unwrap(this: Rc) ->结果 T,Rc T . 返
..
我有以下代码,它同时使用了 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)
..
在 this 答案我找到了一种在 Python 中获取对象引用计数的方法. 他们提到使用 sys.getrefcount().我试过了,但得到了意想不到的结果.当有 1 个引用时,似乎计数为 20.这是为什么呢? 我查看了文档,但它没有t似乎解释了原因. 解决方案 在第一次 sys.getrefcount 调用时,这个对象恰好有 20 个对它的引用.这不仅仅是您创建的参考;在其
..
假设我想要两个变量,并且它们都等于 null.(更现实地说,我正在考虑一个包含大量 null 的数组,但“两个变量"场景足以解决这个问题.)显然,我可以在多个中做到这一点办法.我可以这样做(方法 1): $a = null;$b = $a; 据我所知,这样做的结果是符号表中的两个条目指向一个 zval:'a' 和 'b'.但也可以这样做(方法 2): $a = null;$b = 空; 天
..
我正在实现一个有范围的容器体系结构,以便为每个Express请求(或apollographgraphl请求)创建一个新的 container .我有一个生命周期方法,可以在完成发送响应后调用它,这对于清理和释放内存很有用,并且该方法可以引用我们已完成服务的请求的上下文.在该 context 中,我引用了我之前创建的 inversifyjs容器,因此我可以在cleanup方法中引用该 contain
..