首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C/C++ 中 exit() 與 return 的差異解析

     編輯:關於C++

核心差異

特性returnexit()
適用範圍任何函式通常用於子程式/非 main 函式強制結束程式
main 中使用需配合回傳型別(int main())無論 main 宣告為 void 或 int,exit(code) 皆能設定程式結束代碼
物件解構觸發區域物件解構函式(堆疊展開)不呼叫區域物件解構函式,直接終止程式
清理動作執行 atexit 登錄函式、std::ios_base::Init 清理執行 atexit 函式,但跳過堆疊物件解構

程式碼示範

#include 
#include 
using namespace std;

class Test {
public:
    Test(int id) : id(id) { cout << "建構 " << id << endl; }
    ~Test() { cout << "解構 " << id << endl; }
    int id;
};

void sub_exit() {
    Test t(1); // 區域物件
    exit(0);   // 程式直接結束,t 不會被解構!
}

void sub_return() {
    Test t(2);
    return;    // 函式返回,t 正常解構
}

int main() {
    // exit 在 main 中等同 return 設定結束代碼
    // 但 main 為 void 時只能用 exit 回傳代碼
    // int main() { exit(1); } 等價於 int main() { return 1; }
}

最佳實務建議

  • 正常流程控制:優先使用 return,確保 RAII 機制正常運作(智慧指標、鎖、檔案流自動釋放)。
  • 嚴重錯誤/異常情況:若無法透過例外處理機制回傳,或需立即終止(如 abort() 替代),可使用 exit()。
  • main 函式:建議宣告 int main() 並使用 return,符合標準並利於移植。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved