问题标签 [destructor]

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 投票
5 回答
46893 浏览

vba - Excel VBA 对象构造函数和析构函数

我需要在 VBA 中创建一些需要相互引用的自定义对象,但我遇到了一些问题。

首先 - 对象构造函数如何在 VBA 中工作?有构造函数吗?

第二 - 有析构函数吗?VBA 如何处理对象生命周期的结束?如果我有一个引用其他对象的对象(这是他们唯一的引用),那么我可以将它设置为 Nothing 并完成它还是会产生内存泄漏?

这种准 OO 的东西只是有点烦人。

0 投票
2 回答
2536 浏览

c - C : pthread 数据特定的析构函数只调用一次

pthread_key_create手册页:

可选的析构函数可以与每个键值相关联。在线程退出时,如果键值具有非 NULL 析构函数指针,并且线程具有与键关联的非 NULL 值,则以当前关联值作为其唯一参数调用指向的函数。如果线程退出时存在多个析构函数,则未指定析构函数调用的顺序。

如果在所有非 NULL 值与关联的析构函数调用了所有析构函数之后,仍然有一些非 NULL 值与关联的析构函数,则重复该过程。如果在析构函数的至少 [PTHREAD_DESTRUCTOR_ITERATIONS] 次迭代调用杰出的非 NULL 值之后,仍然有一些非 NULL 值具有关联的析构函数,则实现停止调用析构函数。

我写了一个小例子,用一个简单的析构函数为非 NULL 线程特定值打印“Hello World”。据我所知,这个析构函数只被调用一次(至少在 linux fedora 和 mac os x 上),即使在第一次调用析构函数后线程特定的值仍然不是 NULL。

我错过了什么吗?!(在 glibc 上 PTHREAD_DESTRUCTOR_ITERATIONS = 4。)

这是我的小例子:

0 投票
3 回答
1536 浏览

c# - 为什么在这个非常简单的场景中没有调用我的 .net 析构函数?

我有以下代码:

我认为我的 Finalizer 方法会在我调用 GC.Collect 时被调用,但事实并非如此。

谁能解释我为什么?

0 投票
3 回答
220 浏览

c# - 在.net 析构函数中重新创建对“this”的根引用是否合法?

在 .net 中编写以下内容是否合法?

它按预期工作并向控制台写入'0',但我想知道它是否保证始终工作。

有人知道幕后发生了什么吗?

0 投票
4 回答
1212 浏览

c# - C# 析构函数(又名:终结器)所涉及的成本?

析构函数应该只释放你的对象持有的非托管资源,它不应该引用其他对象。如果您只有托管引用,则不需要(也不应该)实现析构函数。您只希望它用于处理非托管资源。因为有一个析构函数需要一些成本,所以你应该只在消耗有价值的、非托管资源的方法上实现它。

-- C++ 程序员的 C# 十大陷阱

本文没有对此进行更深入的讨论,但是在 C# 中使用析构函数会涉及哪些成本?

注意:我知道 GC 和析构函数在可靠时间没有被调用的事实,除此之外,还有什么其他的吗?

0 投票
2 回答
82098 浏览

c++ - C++中的纯虚析构函数

写错了吗:

对于抽象基类?

至少在 MSVC 中编译...它会在运行时崩溃吗?

0 投票
9 回答
85932 浏览

c++ - 将析构函数设为私有有什么用?

将析构函数设为私有有什么用?

0 投票
9 回答
8440 浏览

c++ - 析构函数应该是线程安全的吗?

我正在浏览旧代码并找到以下代码段:

我想知道它是否有助于保护析构函数?

考虑一个场景:

如果执行顺序是 1=>2,那么它可能会起作用。但是如果顺序颠倒了怎么办?

是设计问题吗?

0 投票
5 回答
41906 浏览

c++ - C++中调用析构函数和构造函数的顺序是什么

在 C++ 中调用析构函数和构造函数的顺序是什么?使用一些基类和派生类的例子

0 投票
7 回答
163993 浏览

c++ - 我需要显式调用基本虚拟析构函数吗?

当在 C++ 中重写一个类(使用虚拟析构函数)时,我在继承类上再次将析构函数实现为虚拟,但是我需要调用基本析构函数吗?

如果是这样,我想它是这样的......

我对吗?