object-lifetime相关内容

关于析构函数中对象生存期的说明

Another question引用C++标准: 3.8/1&q;类型T的对象的生存期在以下情况结束:-如果T是具有非平凡析构函数的类类型(12.4),则析构函数调用 开始,或者-对象占用的存储被重复使用,或者 已发布。&Quot; 这似乎意味着不允许从析构函数访问对象的成员。然而,这似乎是错误的,事实更像是Kerrek SB的回答中所解释的: 成员对象在构造函数体运行之前激活, ..
发布时间:2022-05-19 11:54:48 C/C++开发

函数参数的破坏顺序是什么?

如果某个函数 f 带有参数 p_1, ..., p_n 类型为 T_1, ..., T_n 分别用参数 a_1, ..., a_n 调用,其主体以什么顺序抛出异常、完成或返回论据被破坏了吗?为什么?如果可能,请提供对标准的参考. 编辑:我实际上想问一下函数“参数",但作为 T.C.Columbo 设法消除了我的困惑,我将把这个问题留给论点,并问 一个关于参数的新问题.请参阅对此问题的评论以了 ..
发布时间:2022-01-21 22:06:28 C/C++开发

C++ 迭代器的生命周期和有效性是多少?

我计划在 C++ 中实现一个事物列表,其中元素可能会被乱序删除.我不希望我需要任何形式的随机访问(我只需要定期扫描列表),并且项目的顺序也不重要. 所以我想到了std::list使用 this->position = insert(lst.end(), thing) 应该可以解决问题.我希望 Thing 类记住每个实例的位置,以便我以后可以在恒定时间内轻松地执行 lst.er ..
发布时间:2022-01-10 14:55:20 C/C++开发

C++ 中的对象销毁

C++ 中的对象究竟是什么时候销毁的,这意味着什么?由于没有垃圾收集器,我是否必须手动销毁它们?异常如何发挥作用? (注意:这是 Stack Overflow 的 C++ 常见问题解答的一个条目.如果你想批评以这种形式提供一个常见问题解答,然后 开始发布在 meta 上所有这些都是这样做的地方.该问题的答案在 C++ 聊天室,FAQ 想法最初是从这里开始的,所以你的答案很可能会被提出这个想法 ..
发布时间:2022-01-08 11:42:06 C/C++开发

这个对象生命周期扩展闭包是 C# 编译器错误吗?

我正在回答一个关于关闭可能性的问题(合法地)当我在 C# 编译器方面遇到一些非常 奇怪的代码生成时,延长对象生命周期(4.0,如果这很重要). 我能找到的最短的repro如下: 创建一个 lambda,在调用包含类型的 静态 方法时捕获本地. 将生成的委托引用分配给包含对象的实例字段. 结果:编译器创建一个引用创建 lambda 的对象的闭包对象,当它没有理由 - 委托的“内部 ..
发布时间:2021-12-31 08:03:41 C#/.NET

MEF 保留对 NonShared IDisposable 部分的引用,不允许它们被 GC 收集

我在 MEF 的部件生命周期中遇到了一些问题,这会导致我的 Prism 应用程序出现内存泄漏. 我的应用程序导出视图和视图模型,其中 PartCreationPolicy 设置为 CreationPolicy.NonShared.视图和视图模型分别继承自 ViewBase 和 ViewModelBase,它们实现了 IDisposable. 现在,由于我的部分实现了 IDisposab ..
发布时间:2021-12-31 00:00:37 C#/.NET

何时使用 PerThreadLifetimeManager?

我正在按照下面链接的示例设置统一以使用我的服务层.我的项目设置与本文中的项目非常相似,除了在注册服务依赖项时使用 PerThreadLifetimeManager 的确切原因之外,我了解所有内容.请记住,我还使用了一个通用存储库和工作单元,它也在我的服务层中使用.大多数统一示例使用默认(瞬态)生命周期管理器,并且由于我的设置类似于下面的设置,我想知道为什么我应该使用 PerThreadLifeim ..

与函数指针转换相关的 lambda 对象的生命周期

按照这个答案我现在想知道规则是什么lambdas 的生命周期以及它与自动转换创建的函数指针的生命周期的关系.关于 lambdas 的生命周期有几个问题(例如 此处和此处),在这种情况下答案是“它们的行为与您自己编写的完整函子对象完全一样",但是两者都没有解决转换为函数指针的问题,这可能是一种非常明智的特例. 我整理了这个小例子来说明我的担忧: #include typedef int (* ..
发布时间:2021-12-23 22:02:47 C/C++开发

C++中的对象销毁

C++ 中的对象究竟何时被销毁,这意味着什么?由于没有垃圾收集器,我是否必须手动销毁它们?异常如何发挥作用? (注意:这是Stack Overflow 的 C++ 常见问题解答的条目.如果您想批评以这种形式提供常见问题解答,然后 开始在元数据上发帖所有这些都可以做到这一点.C++ 聊天室中监控该问题的答案a>,FAQ 的想法最初是从这里开始的,因此您的答案很可能会被提出该想法的人阅读.) ..
发布时间:2021-12-17 16:49:35 C/C++开发

执行存储的回调时出现 System.AccessViolationException 错误

我已通过 C++/CLI 包装器将 C++ 成员函数 作为回调传递给 C# 项目(这很好用).C# 项目将在从另一个 .exe 进程接收数据时调用此委托:将引发一个事件并且一个方法将调用此回调.因此,我需要使用已经创建的 C# 类的静态实例来“保存"这个 Action 委托.我得到以下代码: //C++ 非托管函数WRAPPER_API void dispatchEvent(std::funct ..
发布时间:2021-11-26 20:20:41 C/C++开发

在 Delphi 中为表单分发与其生命周期相关的接口对象的安全方式?

我有一个 Delphi 表单,它提供接口对象背后的功能,代码的其他部分也通过属于表单的属性获取引用.我无法将界面功能委托给子对象,因为该功能中有太多是由表单上的控件/组件提供的.我不能使用 TAggregatedObject 或 TContainedObject 来链接传递给 Form 的接口对象的生命周期,因为 TForm 类不是从 TinterfacedObject 继承的,而且 Delphi ..
发布时间:2021-11-26 20:09:12 其他开发