gpt4 book ai didi

c++ - 不可避免地调用 abort() 可能会产生什么影响?

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:44 24 4
gpt4 key购买 nike

cppreference abort , 我们有

Destructors of variables with automatic, thread local and static storage durations are not called. Functions passed to std::atexit() are also not called. Whether open resources such as files are closed is implementation defined.

我对“关闭”我的程序的中止术语的术语和矛盾感到有点困惑,并且从该函数的描述中它说析构函数和开放资源可能不会被调用/分别关闭。那么,是否有可能我的程序仍在运行,并且在调用 abort() 后它有一些内存泄漏或资源仍然打开?

最佳答案

这就像杀了一个人。他们将没有机会支付任何未付账单、整理遗产、打扫公寓等。

是否会发生这种情况取决于他们的亲属或其他第三方。

因此,通常像打开的文件这样的事情会被关闭,并且不会泄漏内存,因为操作系统会处理这些(比如警察什么时候会清空公寓)。有一些平台不会发生这种情况,例如 16 位 Windows 或嵌入式系统,但在现代 Windows 或 Linux 系统下它会没问题。

但是,绝对不会发生的是运行析构函数。这就像让被杀的人在他们的日记中写下最后一条记录并封印之类的——只有那个人自己知道该怎么做,而当你在没有警告的情况下杀死他们时,他们就做不到。因此,如果在析构函数中应该发生任何重要的事情,它可能会有问题,但通常不会很严重 - 它可能类似于程序在某处创建了一个临时文件并且通常会在退出时删除它,现在它不能并且文件保留。

不过,您的程序将关闭并且不再运行。它只是没有机会清理东西,因此取决于操作系统做正确的事情并清理它使用的资源。

关于c++ - 不可避免地调用 abort() 可能会产生什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877444/

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