问题标签 [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 投票
3 回答
3949 浏览

c++ - 自动对象销毁

自动对象(在堆栈上创建的对象)的销毁是否保证不会在超出范围之前执行?

澄清:

不再需要print "2",因此理论上编译器可以在不再需要它时a尝试优化和销毁。a

我可以依靠上述功能始终打印123吗?

0 投票
2 回答
2080 浏览

c++ - vptr 在销毁过程中会发生变化吗?

我在看这篇文章,它说“在进入基类析构函数时,对象变成基类对象,C++ 的所有部分——虚函数、dynamic_casts 等——都以这种方式对待它。” 这是否意味着 vptr 在销毁过程中发生了变化?这是怎么发生的?

0 投票
6 回答
165 浏览

c# - 在 C# 中对同一范围使用多个 using 语句时,调用 Dispose() 方法的顺序是否有保证?

换句话说,stf2的Dispose()方法是否保证首先被调用,然后stf1的Dispose()方法保证第二个被调用?(基本上:Dispose() 方法的调用顺序与它们所属对象的分配顺序相反?)

0 投票
1 回答
1178 浏览

apache-flex - Spark SkinnableComponent skinDestructionPolicy

作为尝试解决应用程序中内存泄漏的一部分,我们发现对于每个SkinnableComponent,默认skinDestructionPolicy设置为"never"

这意味着当使用静态皮肤部件时,皮肤将永远留在记忆中。
此外,永远不会触发主机组件中 partRemoved() 的覆盖。因此,我们在 partAdded() 覆盖中添加的事件侦听器不会被删除,这实际上会导致视图和皮肤保留在内存中。

在进行大量视图切换时,这是不可接受的。

以下是我们现在如何解决此问题的示例:

但是,使用这种mx::internal方式来规避这种行为对我来说似乎很奇怪。关于这方面的文档也很少,所以任何想法都会受到欢迎。

干杯

0 投票
2 回答
272 浏览

2d - 存储基于像素的世界数据

我正在制作具有可破坏地形的 2d 游戏。它将在 iOS 上,但我正在寻找想法或伪代码,而不是实际代码。我想知道如何存储大量数据。(这将是一个大世界,大约 64000 像素宽和 9600 高。每个像素都需要一种方法来存储它是什么类型的对象。)我希望使用 2D 数组,但快速负载测试表明这是不可行的(即使使用 640x480 网格,我的速度也低于 1 fps)我也尝试了这里详述的方法:http: //gmc.yoyogames.com/index.php?showtopic= 315851(我曾经使用 Game Maker 并记住了这种方法)但是似乎有点麻烦,并且再次重新组合对象几乎是不可能的。那么还有哪些其他方法呢?有谁知道蠕虫是如何工作的?那么图像编辑器呢,他们如何存储每个像素的颜色?谢谢你,YM

0 投票
4 回答
9994 浏览

forms - 在 Delphi 中销毁表单并显示另一个表单的正确方法

目前在我的程序中,我有一个启动表单和一个主表单。启动表格显示一两秒钟。

现在,我在计时器中有以下代码:

现在,我不确定这是否是正确的方法。它有效,但是在调用时application.Terminate(); 我收到访问冲突消息,导致我相信我在破坏启动表单时做错了。 .

如果有人可以展示做我想做的事情的正确程序(非模态),将不胜感激。

提前致谢,

编辑:

感谢所有反馈,我通过简单地添加代码来修复我的访问冲突:

进入 frmStartup.formClose 方法。

0 投票
3 回答
171 浏览

iteration - 遍历列表时为什么不能删除当前元素?

我想遍历一个列表,对元素执行一个操作,并根据一些标准,我想摆脱活动元素。但是,当使用下面的函数时,我最终会陷入无限循环。

它指向自己是不可能的吗?最后,当然elt(car list)

这是一个正确的评估吗?我怎样才能有效地解决这个问题?

0 投票
1 回答
657 浏览

c++ - 局部静态对象的静态销毁

帮助我理解这一点......看粗体。从标准 3.6.3 终止 (2)

2 如果函数包含已销毁的静态或线程存储持续时间的块范围对象,并且在具有静态或线程存储持续时间的对象的销毁期间调用该函数,则如果控制流通过,则程序具有未定义的行为先前销毁的块作用域对象的定义。同样,如果块范围对象在其销毁后被间接使用(即,通过指针),则行为未定义。

然后在别的地方...

然后在用户析构函数中......

标准是否说如果使用 odr-use 规则静态创建的本地静态 localMan 对象被破坏,然后再次调用该函数(是否创建新的静态),这是未定义的?看起来它为定义的行为留出了空间,但如果它通过了被破坏对象的定义,则不是。

有人对此有明确的见解吗?

0 投票
3 回答
91 浏览

c++ - 在编译时检查销毁顺序约束

有没有办法在编译时检查“A在B之前被破坏”形式的破坏顺序约束?

0 投票
2 回答
795 浏览

c++ - 定义向量元素的破坏顺序是否合理?

我知道向量元素的破坏顺序不是由 C++ 标准定义的(请参见std::vector 元素的破坏顺序),我看到我检查的所有编译器都从头到尾进行了这种破坏——这让我很惊讶,因为动态和静态数组以相反的顺序进行,这种相反的顺序在 C++ 世界中很常见。

严格来说:我知道“容器成员......可以使用例如插入和擦除成员函数以任何顺序构造和销毁”,我不投票支持“容器在这些更改上保留某种日志”。我只会投票支持将当前的向量析构函数实现从前向破坏更改为元素的后向破坏——仅此而已。并且可能将此规则添加到 C++ 标准中。

以及为什么?以这种方式从数组更改为向量会更安全。

真实世界的例子:我们都知道互斥锁的锁定和解锁顺序非常重要。并确保解锁发生 - 使用 ScopeGuard 模式。那么销毁顺序很重要。考虑这个例子。那里 - 从数组切换到向量会导致死锁 - 只是因为它们的破坏顺序不同:

输出 - 查看从 f1() 到 f2() 的销毁顺序更改