问题标签 [object-destruction]

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.

0 投票
6 回答
6854 浏览

java - 为什么终结器会有“严重的性能损失”?

有效的 Java 说:

使用终结器会导致严重的性能损失。

为什么使用终结器销毁对象会更慢?

0 投票
3 回答
672 浏览

visual-c++ - 静态 CComPtr 变量

在应用程序中拥有静态 CComPtr 成员变量是不是坏主意。由于我们无法控制静态变量的破坏,它可能发生在 CoUninitialze 之后。

0 投票
6 回答
3048 浏览

java - finalize() 方法的良好使用

这主要是出于好奇。

除了调试/日志记录/分析目的之外,如果有人遇到过 Object.finalize() 的任何好的用法,我一直在徘徊?

如果您还没有遇到任何问题,您会说什么是好的用法?

0 投票
4 回答
1102 浏览

c++ - C++:析构函数级联期间的回调和系统计时器事件

假设对象相互调用的 OO 设计,一段时间后被调用的对象回调初始对象(调用和回调)。在正常程序终止期间,当调用析构函数时,是否有某种承诺不会调用系统计时器,也不会有对象发起回调?

0 投票
5 回答
1053 浏览

c++ - C++ 中的智能指针

假设我们有一个base类和一个derived. 所以:

现在说我们有这个代码使用上面的类和一个智能指针类:

我知道它会derived通过调用 的析构函数来防止对对象进行切片derived,但是它怎么知道这样做呢?存储在智能指针中的引用不会是 type 的引用base*吗?它是否遍历某种层次结构树,将该指针转换为derived*然后调用删除?或者还有什么我不知道的?

该实现被认为是线程安全的、非侵入式的和引用计数。

的,您看到的类类似于我正在测试的类。显然有一种方法可以使用这些给定的课程来做到这一点。关于如何在我上面的问题中提到的主要思想,但我不确定这样的实现将如何工作。

0 投票
3 回答
397 浏览

c++ - 抛出异常时是删除静态对象还是仅删除本地对象?

当抛出异常时,然后在堆栈展开过程中,我认为只有本地对象被破坏,而不是静态或堆对象。如果这是真的,我不确定为什么要调用类(测试)析构函数?谢谢。

0 投票
1 回答
273 浏览

delphi - delphi中的虚拟类创建/销毁

这是我在这里的第一篇文章,但我想对社区说声谢谢,因为通过来到这里并在已经回答的问题中找到解决方案,我无数次找到了解决问题的方法。

话虽如此,我想切入正题。我在 Code Gear 的 Delphi 2007 IDE 工作。我对在德尔福工作还是很陌生,准确地说还不到 3 个月,所以请记住这一点,因为我可能在这里遗漏了一些基本的东西。

首先,我想围绕这个问题提供一些背景信息。我正在编写一个调度实用程序来在特定时间执行任务。对于每个可用任务,有 2 个与该任务相关联的相关 delphi 框架。第一帧用于编辑特定于该任务的详细信息,第二帧用于在任务运行时显示运行时信息。

保存运行任务列表,并在实用程序的滚动框中显示运行时信息的相应帧列表。这些运行时框架在任务开始和结束时被创建和销毁。这让我想到了我的问题。

我使用虚拟类管理器来保存每个任务的可用显示和编辑框架列表,并根据需要动态创建它们。在运行时,一切都正常运行,当应用程序实际关闭时,我看到了问题。

该程序在关闭时发出 EAccessViolation 异常。当我尝试使用 IDE 追踪问题时,与问题对应的行或操作实际上并不存在于我的代码中。所以它必须是在后台执行的一些清理功能的一部分。

我已将其范围缩小到动态创建虚拟类框架的代码,因为当我注释掉该代码时它会正常关闭。所以这让我相信我没有执行一些与使用这种类型的类创建相关的操作。

这是我如何使用虚拟类管理器创建框架的摘录。当不再需要它们时,我正在使用 FreeAndNil 释放实例。我已经尽我所能确保在应用程序关闭之前我已经正确释放了任何实例,但显然我遗漏了一些东西。

那么有没有人有任何想法从这里调试这样的东西?

PS再次,我是新人,所以如果有任何我遗漏、掩饰或忘记添加的内容,请告诉我。再次感谢您阅读我的帖子!

0 投票
2 回答
123 浏览

c++ - 析构函数调用以前从未构造过的对象

我有以下代码。

下面是执行此代码的日志

对我来说最奇怪的是析构函数的调用次数比构造函数的调用次数多。此外,它被调用用于以前从未构造过的对象,而是用于相同的数据地址。
怎么可能?

0 投票
2 回答
689 浏览

c++ - RVO 与 std::unique_ptr<> 清理

这是关于对象销毁与返回值优化的 C++ 规范的问题。

我可以期望 RVO 在std::unique_ptr<>清理之前返回正确的值吗?

0 投票
2 回答
5558 浏览

javascript - 如何在 JavaScript 中删除 Worker 对象?

在我的网络应用程序中,我经常需要重新实例化 Worker 对象,因为无法将新脚本传递给旧的现有对象。一段时间后,一些浏览器开始阻止创建新的 Worker 对象,因为它们达到了一个窗口的 Worker 限制。我试图在创建新对象之前删除已完成的工作对象,但显然我做错了。这是一个简单的测试,在 opera 中失败(限制为每个窗口 256 个工作人员):

我的问题是如何完全删除一个工作对象,以便永远不会达到浏览器限制?谢谢!