0
点赞
收藏
分享

微信扫一扫

C++ exit 和 _exit区别

回溯 2024-07-24 阅读 22

对比exit 和 _exit区别,exit 推出会执行静态类的析构函数,而_exit不会

#include <iostream>
#include <cstdlib>
#include <unistd.h>

class MyClass {
public:
    MyClass(const std::string& name) : name(name) {
        std::cout << name << " constructor" << std::endl;
    }
    ~MyClass() {
        std::cout << name << " destructor" << std::endl;
    }
private:
    std::string name;
};

void exitHandler() {
    std::cout << "Exit handler called" << std::endl;
}

int main() {
    MyClass localObj("Local");
    static MyClass staticObj("Static");

    std::cout << "Using exit:" << std::endl;
    std::exit(0);

    // std::cout << "Using _exit:" << std::endl;
    // _exit(0);

    return 0;
}

总结:
比较这些退出方式
exit:

调用全局和静态对象的析构函数。
调用通过 atexit 注册的退出处理程序。
不调用局部对象的析构函数。
_exit:

立即终止程序,不调用任何析构函数。
通常用于子进程的快速退出。
return:

正常退出程序,调用所有对象的析构函数。
适用于程序正常结束的情况。

举报

相关推荐

0 条评论