问题标签 [self-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 投票
4 回答
5704 浏览

c++ - “删除这个”有什么用?

今天,我看到了一些遗留代码。在析构函数中有一个类似“ delete this”的语句。我认为,这个调用将是递归的。为什么它在工作?

我在 Y! 上快速搜索了一下,发现如果需要限制用户创建堆栈对象,我们可以将析构函数设为私有并提供删除实例的接口。在提供的接口中,我们必须对该指针调用delete。

还有其他情况可以使用此类语句吗?

0 投票
11 回答
21018 浏览

c++ - 对象应该在 C++ 中删除自己吗?

我在 C# 中度过了过去 4 年,因此我对 C++ 中当前的最佳实践和常见设计模式很感兴趣。考虑以下部分示例:

在这里,我们有一个负责管理一组对象并定期更新它们的世界。火是一个可以在许多不同情况下添加到世界的对象,但通常是由世界上已经存在的另一个对象添加的。火是唯一知道它何时烧毁的对象,所以目前我让它自行删除。造成火灾的物体可能不再存在或不再相关。

这是明智的做法还是有更好的设计可以帮助清理这些物体?

0 投票
3 回答
7328 浏览

javascript - 在javascript中,对象如何在事件中自毁?

我有这个功能,可以即时创建一个 DIV。但是现在,我想在onclick事件上销毁这个对象,但我只是不知道怎么做。

我错过了什么?

谢谢

0 投票
10 回答
28065 浏览

c++ - “删除”是否安全?

在我最初的基本测试中,这样做是完全安全的。但是,让我感到震惊的是,稍后尝试在sthis的函数中进行操作可能是运行时错误。这是真的吗?通常安全吗?还是只有某些情况下它是安全的?deletethisdelete this

0 投票
4 回答
8482 浏览

delphi - Delphi:表格可以自我释放吗?

我有一个表格,我用它来显示一些信息几秒钟。表格可以自行释放吗?我可以在构造函数中启动一个计时器,然后在计时器事件中调用 self.free 吗?或者这可能会导致麻烦?

0 投票
8 回答
2695 浏览

c++ - 使用“delete this”删除当前对象可以吗?

我正在编写一个链表,我希望一个结构的析构函数(一个节点结构)简单地删除自己,并且没有任何副作用。我希望我的列表的析构函数迭代地调用自身的 Node 析构函数(临时存储下一个节点),如下所示:

所以这将是我的节点析构函数:

这是否可以接受,尤其是在这种情况下?

0 投票
7 回答
37468 浏览

c# - 一个可执行文件中的 C# 中的可自删除应用程序

是否可以在 C# 中创建一个能够在某些情况下自行删除的应用程序。

我需要为我的应用程序编写一个更新程序,但我不希望在更新过程之后留下可执行文件。

有一个官方的 .Net OneClick,但由于与我的 HTTP 服务器的一些不兼容以及 OneClick 本身的一些问题,我不得不自己制作一个。

乔治。

[编辑] 更多细节:

我有:应用程序可执行文件下载更新程序(“补丁”,但不完全是)这个“补丁”更新应用程序可执行文件本身。

应用程序执行如下:

0 投票
4 回答
951 浏览

c++ - 我可以使用该类中的函数删除动态分配的类吗?

我正在为游戏编写状态管理器。对于我想如何做到这一点,我已经掌握了大部分逻辑。我希望在 StateManager 类的堆栈中处理将是类的状态。每个状态都会有暂停功能,堆栈将是一个 STL 堆栈。

当一个状态完成了它需要做的事情(例如:从暂停屏幕,用户点击“返回游戏”),它需要从堆栈中移除并删除。我目前的逻辑(不幸的是,我无法测试)是这样的:

国家完成了它的工作。在它的更新函数中,当它发现它已经完成时,它会调用一个函数来清理状态。此函数将处理任何需要绑定的即时松散端(如果有的话),从状态管理器堆栈调用 pop 函数,并删除自身。

我要问的是:我可以从内部删除一个类吗?

0 投票
12 回答
2068 浏览

c++ - 是否应该从成员方法中调用“删除它”?

我只是在读这篇文章,希望得到人们的建议:

问:应该delete this;从成员方法中调用吗?

0 投票
11 回答
14640 浏览

c# - 如何让我的 .NET 应用程序自行擦除?

如何让我的 C# 应用程序自行擦除(自毁)?以下是我认为可能有效的两种方法:

  • 提供另一个删除主程序的程序。那么,这个删除程序是如何删除的呢?
  • 为 CMD 创建一个进程,等待几秒钟然后删除您的文件。在这几秒钟内,您关闭了您的应用程序。

这两种方法似乎效率低下。我有一种感觉,Windows 中有一些内置标志或其他东西允许这些东西。我该怎么做?另外,你能提供一些示例代码吗?

更新:感谢您的所有回答!我要试一试,看看能把我带到哪里。

首先,有些人问我为什么要让我的应用程序这样做。答案如下:几天前,我阅读了 Joel Spolsky 在他的博客上发布的 Aardvark 项目规范,其中提到客户端应用程序将在远程会话后自行删除。我想知道这是如何工作的,以及如果我需要这样做,我如何才能完成这样的壮举。

以下是对建议内容的简要概述:

  • 创建一个注册表项,告诉 Windows 在重新启动时删除文件
  • 使用 ping 命令启动 CMD 等待几秒钟,然后删除文件

当然,正如评论中所述,这两者都有其缺点。

但是,下面概述的这种方法会起作用吗?

有两个可执行文件:Program.exe 和 Cleaner.exe。前者是程序本身,后者是删除 Program.exe 及其本身的应用程序(如果它被加载到内存中,正如我即将解释的那样)。Program.exe(具有依赖项)是否可以将所有没有任何依赖项的 Cleaner.exe加载到内存中并运行它?

如果可以的话,是否可以将 Cleaner.exe 打包到 Program.exe 中,加载到内存中并运行?