gpt4 book ai didi

c++ - 未按预期调用析构函数

转载 作者:行者123 更新时间:2023-11-28 06:24:42 25 4
gpt4 key购买 nike

我正在编写一个服务器应用程序。在 RIIA 之后,我在我的一个类的构造函数中创建了一个文件,并在析构函数中删除了它。此类包装在 unique_ptr 中。这是一个服务器应用程序,我只能通过向它发送信号 (SIGINT) 来终止它。

奇怪的是,我在 unique_ptr 持有的类的析构函数上放置了 std::cerr 语句,并且当应用程序关闭/死机时它们不会被调用。

这是在按下 ctrl+c 时预期的结果,还是我遗漏了一些与析构函数相关的明显信息?

最佳答案

信号处理和 C++ 异常是截然不同的特征。信号(主要是 *nix 特性)由信号处理程序捕获;我相信虽然在某种意义上肯定“范围”发生了变化,但它是从 C++ 运行时外部发生变化的,因此不会触发通常的堆栈展开(这就像在堆栈的第二个维度上移动,可以这么说) .谷歌搜索让我找到了这篇我觉得很有趣的帖子:https://gcc.gnu.org/ml/gcc-help/2011-08/msg00253.html .

关于c++ - 未按预期调用析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28729349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com