共用方式為


<cstdlib>

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

注意

<stdlib.h> 不含類型 wchar_t

需求

標頭: <cstdlib>

命名空間std

Namespace和宏

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++ 標準程式庫中的執行緒安全