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

c++ - C++中静态对象的销毁顺序

我可以控制静态对象被破坏的顺序吗?有什么方法可以强制执行我想要的订单吗?例如,以某种方式指定我希望某个对象最后被销毁,或者至少在另一个静态对象之后被销毁?

0 投票
5 回答
293 浏览

c++ - 关于在 C++ 中销毁临时对象的确切时间的问题

以下代码是否安全(它在调试中工作):

所以 - 它安全吗?我应该忘记它并使用带有显式 tmp 的代码吗?

但无论如何-如果允许优化器在从此调用返回之前杀死临时对象,我仍然感兴趣:

编辑:谢谢大家!不幸的是,我无法更改函数“takesPointer”(它是库的一部分),我只能将其包装在调用 takePointer 的函数“takesReference”中 - 这会消除副本,还是允许编译器创建一个副本(“类型”是一个 int-3x3-Matrix,所以它不会那么糟糕,但仍然......)?

关于销毁时间:它会在“takesPointer”返回之后被销毁,还是在它被调用之后被销毁?

0 投票
2 回答
188 浏览

c++ - C++基本指针问题

我有一些共享指针shared_ptr<T> pointer1(new T(1));

现在,在代码的其他部分,我有一个明确的副本pointer2(猜想它会存储在一个std::map或其他容器中)。假设复制是这样完成的map.insert(make_pair(key1, pointer1));

我使用第二个副本只是为了预缓存一些数据,这意味着如果主指针已经无效,则不需要存储第二个指针。在这种情况下我该怎么办?

如果我知道第二个指针在pointer1我的代码的其他部分无效,有什么方法可以强制释放第二个指针的内存?

或者我应该采取丑陋的方式 - 不时检查我的地图是否有指针ptr.unique()设置true并破坏它们?

也许有一些替代方案/建议?


编辑 - 纯代码示例

有什么方法/技巧可以让地图包含<0, shared_ptr[NULL]>而不是<0, shared_ptr[5]>在这些操作发生之后?

谢谢

0 投票
4 回答
764 浏览

c++ - C ++中的无异常树破坏

我最近在通过删除树的根“节点”来销毁树时设法获得堆栈溢出,而节点析构函数与此类似:

我想到的一个解决方案是使用自己的堆栈。所以以这种方式删除树:

但是在那里 std::stack::push() 可能会抛出异常。是否可以编写无异常树销毁?如何?

编辑:

如果有人对这里感兴趣,这里是一个受 jpalecek 指出的算法启发的无异常非递归代码:

注意:Node::IsLeaf()相当于Node::GetChildCount()!=0.

0 投票
1 回答
1140 浏览

python - python如何管理对象删除或销毁

伙计们,我对 python 很陌生,并且正在学习它来构建一个 gui 应用程序(使用 wypython)。我有一个与python中的对象破坏有关的问题。例如在 myFrame 我有 onNew(创建一个新文档)和 onOpen(打开一个文件)方法。

简而言之,它看起来像这样。

现在,我想考虑“如果用户再次点击打开或新建,在他点击之前。”

所以对于窗口类,我可以调用self.viewwindow.Destroy()来销毁窗口。数据模型对象呢?如果我先调用 new: self.data=DataModel(),然后调用 open 和 re-assign self.data=DataModel.from_file(...),那么旧实例呢?我需要自己破坏它还是python会管理这种破坏?

0 投票
2 回答
1268 浏览

c# - 为什么在所有销毁代码之后会话变量的值仍然存在?

登录.aspx

表.aspx

当我单击注销链接时

  • 登录页面被加载,导致所有会话状态的破坏。
  • response.write当我用来查看会话变量的值时,登录页面确认了这一点。
  • 当我提供用户名和密码并单击登录时,它会重定向到表格页面。
  • 当我单击注销时,它会重定向到登录页面,登录页面会破坏信息。

问题

  • 登录信息销毁后,我点击表格链接,它进入表格页面,如 NO NO 并重定向到登录页面。
  • 但是如果我复制粘贴表格页面的 url,那么无论我做什么,它都允许我查看页面。也就是说,它采用会话变量的值并评估为 TRUE,即使这些值被破坏。

我不能使用 asp.net 登录功能,我的限制不允许我使用该控件。

0 投票
4 回答
2542 浏览

c++ - Local variables construction and destruction with optimizer involved

If I have this code:

I know that variables a and b will be destroyed in reverse allocation order (b will be destroyed first, then a); but can I be sure that the optimizer will never swap the allocation and construction of a and b? Or I must use volatile to enforce it?

0 投票
2 回答
1313 浏览

com - 是否有“CreateInstance”的对应物?

我们有一些使用 MSXML 的代码,这样做是为了创建 XML 文档对象:

一旦我们完成了 doc_in,我们如何销毁它?它只是在 doc_in 超出范围时自动销毁,还是什么?

0 投票
1 回答
569 浏览

qt - 松散的QProcess

我创建了两个程序 A 和 B。B 被设计为在 64 位 A 内启动的 32 位 QProcess。这些程序通过 stdin、stdout 和 QSharedMemory 很好地通信。

现在,如果 A 关闭,B 也将关闭。但是,如果我在 Windows 任务管理器中结束进程 A,B 将继续逍遥法外,B 的 cpu 使用率将飙升。为什么?

如果 A 立即被销毁,我该如何关闭 B?

0 投票
1 回答
1541 浏览

c++ - 主线程的销毁顺序和pthread_key_create的使用

我想知道使用pthread_key_createwhile 传入析构函数。

我想要这样的东西:

显然我遗漏了相当多的细节。

对于不是主线程的任何线程,这显然很好(提供锁定等),并且每当线程死亡时,我的workoncomplex函数就会被调用并操作foo对象。

我的问题是,这对主线程是否有效,因为显然pthreadkey析构函数的调用发生在线程结束时,但它是否保证在静态被破坏之前运行?如果是这样,我是否必须检查我是否在主线程中并立即返回?或者我可以只对所有线程一视同仁,并假设我的静态对象仍然存在。