共用方式為


<cstdlib>

包含 C Standard 程式庫標頭 <stdlib.h> ,並將相關聯的名稱新增至 std 命名空間。 包含此標頭可確保在命名空間中 std 宣告使用外部連結宣告的名稱。

注意

<stdlib.h> 不包含 類型 wchar_t

需求

標頭 <cstdlib>

命名空間:std

命名空間和宏

namespace std {
    using size_t = see definition;
    using div_t = see definition;
    using ldiv_t = see definition;
    using lldiv_t = see definition;
}

#define NULL
#define EXIT_FAILURE
#define EXIT_SUCCESS
#define RAND_MAX
#define MB_CUR_MAX

僅說明函式

extern "C" using c-atexit-handler = void();
extern "C++" using atexit-handler = void();
extern "C" using c-compare-pred = int(const void*, const void*);
extern "C++" using compare-pred = int(const void*, const void*);

開始和終止函式

函式 描述
_Exit 在不使用解構函式或已註冊函式的情況下終止程式。
abort 在不使用解構函式的情況下終止程式。
atexit 註冊程式終止的函式。
exit 使用執行緒和靜態儲存體終結物件,然後傳回控制項。
at_quick_exit 在沒有程式終止引數的情況下註冊函式。
quick_exit 向程式終止保留的物件註冊函式。
getenv 請參閱 C 標準程式庫參考。
system 請參閱 C 標準程式庫參考。

_Exit

[[noreturn]] void _Exit(int status) noexcept;

備註

程式會終止,而不會針對自動、執行緒或靜態儲存期間的物件執行解構函式,而且不會呼叫傳遞至 atexit() 的函式。 函式 _Exit 是安全訊號。

abort

[[noreturn]] void abort() noexcept;

備註

程式會終止,而不會針對自動、執行緒或靜態儲存期間的物件執行解構函式,而且不會呼叫傳遞至 atexit() 的函式。 函式 abort 是安全訊號。

at_quick_exit

int at_quick_exit(c-atexit-handler * func) noexcept;
int at_quick_exit(atexit-handler * func) noexcept;

傳回值

如果註冊成功,則為零;如果註冊失敗,則為非零。

備註

函式 at_quick_exit() 會註冊函 func 式,在呼叫 時 quick_exit() 不會呼叫引數。 呼叫 at_quick_exit() 之前,所有 呼叫 quick_exit() 都可能不會成功。 函式 at_quick_exit() 不會導入資料競爭。 如果 at_quick_exit() 從多個執行緒呼叫,則註冊順序可能不確定。 由於 at_quick_exit() 註冊與註冊不同 atexit() ,因此應用程式可能需要使用相同的引數呼叫這兩個註冊函式。 MSVC 支援至少 32 個函式的註冊。

atexit

int atexit(c-atexit-handler * func) noexcept;
int atexit(atexit-handler * func) noexcept;

備註

函式 atexit() 會登錄 所 func 指向的函式,以在正常程式終止時呼叫,而不需要引數。 對 的呼叫 atexit() 不會在呼叫 exit() 之前發生,可能無法成功。 函式 atexit() 不會導入資料競爭。

傳回值

如果註冊成功,則傳回零,如果註冊失敗,則傳回非零。

exit

[[noreturn]] void exit(int status);

備註

首先,具有線程儲存持續時間且與目前線程相關聯的物件會終結。

接下來,會終結具有靜態儲存期間的物件,並呼叫 呼叫 atexit() 來註冊函式。 呼叫 時 exit() ,不會終結自動物件。 如果 控制項離開 所 exit() 呼叫的已註冊函式,因為函式未提供擲回例外狀況的處理常式, std::terminate() 則會呼叫 。 每次註冊函式時都會呼叫一次。 具有自動儲存持續時間的物件全都會終結于不含自動物件的程式中 main ,並執行 對 exit() 的呼叫。 您可以擲回攔截到 的 main 例外狀況,直接將控制項傳送至這類 main 函式。

接下來,所有開啟的 C 資料流程(如 中 <cstdio> 宣告的函式簽章所調解)都會排清未寫入的緩衝資料,所有開啟的 C 資料流程都會關閉,而且會移除呼叫 tmpfile() 所建立的所有檔案。

最後,控制權會傳回至主機環境。 當 為零或 EXIT_SUCCESSstatus ,會傳回狀態成功終止的實作定義形式。 MSVC 會傳回零的值。 如果 statusEXIT_FAILURE ,MSVC 會傳回 3 的值。 否則,MSVC 會傳 status 回參數值。

getenv

char* getenv(const char* name);

quick_exit

[[noreturn]] void quick_exit(int status) noexcept;

備註

一般而言,呼叫 at_quick_exit() 所註冊的函式會以其註冊的反向順序呼叫。 此順序不適用於呼叫其他已註冊函式之後所註冊的函式。 呼叫 時 quick_exit() ,不會終結任何物件。 如果 控制項離開 所 quick_exit() 呼叫的已註冊函式,因為函式未提供擲回例外狀況的處理常式, std::terminate() 則會呼叫 。 透過 註冊的 at_quick_exit() 函式是由呼叫 quick_exit() 的執行緒叫用,這可以是與註冊它不同的執行緒。 這表示已註冊的函式不應依賴具有線程儲存期間之物件的身分識別。 呼叫已註冊的函式之後,會 quick_exit() 呼叫 _Exit(status) 。 標準檔案緩衝區不會排清。 quick_exit()當向 註冊的 at_quick_exit() 函式為 時,函式是訊號安全。

system

int system(const char* string);

記憶體配置函式

// void* aligned_alloc(size_t alignment, size_t size); // Unsupported in MSVC
void* calloc(size_t nmemb, size_t size);
void free(void* ptr);
void* malloc(size_t size);
void* realloc(void* ptr, size_t size);

備註

這些函式具有 C 標準程式庫中指定的語意。 MSVC 不支援 函式 aligned_alloc 。 C11 以與 Microsoft 實 free() 作不相容的方式指定 aligned_alloc()free() 也就是必須能夠處理高度對齊的配置。

數值字串轉換

double atof(const char* nptr);
int atoi(const char* nptr);
long int atol(const char* nptr);
long long int atoll(const char* nptr);
double strtod(const char* nptr, char** endptr);
float strtof(const char* nptr, char** endptr);
long double strtold(const char* nptr, char** endptr);
long int strtol(const char* nptr, char** endptr, int base);
long long int strtoll(const char* nptr, char** endptr, int base);
unsigned long int strtoul(const char* nptr, char** endptr, int base);
unsigned long long int strtoull(const char* nptr, char** endptr, int base);

備註

這些函式具有 C 標準程式庫中指定的語意。

多位元組/寬字元串和字元轉換函式

int mblen(const char* s, size_t n);
int mbtowc(wchar_t* pwc, const char* s, size_t n);
int wctomb(char* s, wchar_t wchar);
size_t mbstowcs(wchar_t* pwcs, const char* s, size_t n);
size_t wcstombs(char* s, const wchar_t* pwcs, size_t n);

備註

這些函式具有 C 標準程式庫中指定的語意。

演算法函式

void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, c-compare-pred * compar);
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, compare-pred * compar);
void qsort(void* base, size_t nmemb, size_t size, c-compare-pred * compar);
void qsort(void* base, size_t nmemb, size_t size, compare-pred * compar);

備註

這些函式具有 C 標準程式庫中指定的語意。

低品質亂數產生函式

int rand();
void srand(unsigned int seed);

備註

這些函式具有 C 標準程式庫中指定的語意。

絕對值

int abs(int j);
long int abs(long int j);
long long int abs(long long int j);
float abs(float j);
double abs(double j);
long double abs(long double j);
long int labs(long int j);
long long int llabs(long long int j);

備註

這些函式具有 C 標準程式庫中指定的語意。

整數除數

div_t div(int numer, int denom);
ldiv_t div(long int numer, long int denom);
lldiv_t div(long long int numer, long long int denom);
ldiv_t ldiv(long int numer, long int denom);
lldiv_t lldiv(long long int numer, long long int denom);

備註

這些函式具有 C 標準程式庫中指定的語意。

另請參閱

標頭檔參考
C++ 標準程式庫概觀
C++ 標準程式庫中的執行緒安全