<cstdlib>

Menyertakan header <stdlib.h> pustaka C Standard dan menambahkan nama terkait ke std namespace. Menyertakan header ini memastikan bahwa nama yang dideklarasikan menggunakan tautan eksternal di header pustaka standar C dideklarasikan di std namespace layanan.

Catatan

<stdlib.h> tidak menyertakan jenis wchar_t.

Persyaratan

Header: <cstdlib>

Ruang nama:std

Namespace layanan dan Makro

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

Fungsi eksposisi saja

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*);

Fungsi mulai dan penghentian

Function Deskripsi
_Exit Menghentikan program tanpa menggunakan destruktor atau fungsi terdaftar.
abort Menghentikan program tanpa menggunakan destruktor.
atexit Mendaftarkan fungsi untuk penghentian program.
exit Menghancurkan objek dengan utas dan penyimpanan statis, lalu mengembalikan kontrol.
at_quick_exit Mendaftarkan fungsi tanpa argumen untuk penghentian program.
quick_exit Mendaftarkan fungsi dengan objek yang dipertahankan untuk penghentian program.
getenv Lihat Referensi pustaka standar C.
system Lihat Referensi pustaka standar C.

_Exit

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

Keterangan

Program ini dihentikan tanpa mengeksekusi destruktor untuk objek durasi penyimpanan otomatis, utas, atau statis dan tanpa memanggil fungsi yang diteruskan ke atexit(). Fungsinya _Exit aman sinyal.

abort

[[noreturn]] void abort() noexcept;

Keterangan

Program ini dihentikan tanpa mengeksekusi destruktor untuk objek durasi penyimpanan otomatis, utas, atau statis dan tanpa memanggil fungsi yang diteruskan ke atexit(). Fungsinya abort aman sinyal.

at_quick_exit

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

Tampilkan Nilai

Nol jika pendaftaran berhasil, bukan nol jika gagal.

Keterangan

Fungsi at_quick_exit() mendaftarkan fungsi func, yang dipanggil tanpa argumen ketika quick_exit() dipanggil. Panggilan ke at_quick_exit() yang tidak terjadi sebelum semua panggilan ke quick_exit() mungkin tidak berhasil. Fungsi at_quick_exit() tidak memperkenalkan perlombaan data. Urutan pendaftaran mungkin tidak ditentukan jika at_quick_exit() dipanggil dari lebih dari satu utas. Karena at_quick_exit() pendaftaran berbeda dari atexit() pendaftaran, aplikasi mungkin perlu memanggil kedua fungsi pendaftaran menggunakan argumen yang sama. MSVC mendukung pendaftaran setidaknya 32 fungsi.

atexit

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

Keterangan

Fungsi atexit() mendaftarkan fungsi yang ditujukkan oleh untuk func dipanggil tanpa argumen pada penghentian program normal. Panggilan ke atexit() yang tidak terjadi sebelum panggilan ke exit() mungkin tidak berhasil. Fungsi atexit() tidak memperkenalkan perlombaan data.

Tampilkan Nilai

Mengembalikan nol jika pendaftaran berhasil, bukan nol jika gagal.

exit

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

Keterangan

Pertama, objek dengan durasi penyimpanan utas dan terkait dengan utas saat ini dihancurkan.

Selanjutnya, objek dengan durasi penyimpanan statis dihancurkan dan fungsi yang terdaftar dengan panggilan atexit() dipanggil. Objek otomatis tidak dihancurkan saat exit() dipanggil. Jika kontrol meninggalkan fungsi terdaftar yang dipanggil oleh exit() karena fungsi tidak menyediakan handler untuk pengecualian yang dilemparkan, std::terminate() dipanggil. Fungsi dipanggil sekali untuk setiap kali terdaftar. Objek dengan durasi penyimpanan otomatis semuanya dihancurkan dalam program yang fungsinya main tidak berisi objek otomatis dan menjalankan panggilan ke exit(). Kontrol dapat ditransfer langsung ke fungsi seperti main itu dengan melemparkan pengecualian yang tertangkap dalam main.

Selanjutnya, semua aliran C yang terbuka (seperti yang dimediasi oleh tanda tangan fungsi yang dideklarasikan dalam <cstdio>) dengan data buffer yang tidak ditulis dihapus, semua aliran C yang terbuka ditutup, dan semua file yang dibuat dengan panggilan tmpfile() dihapus.

Akhirnya, kontrol dikembalikan ke lingkungan host. Ketika status nol atau EXIT_SUCCESS, bentuk penghentian status berhasil yang ditentukan implementasi dikembalikan. MSVC mengembalikan nilai nol. Jika status adalah EXIT_FAILURE, MSVC mengembalikan nilai 3. Jika tidak, MSVC mengembalikan status nilai parameter.

getenv

char* getenv(const char* name);

quick_exit

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

Keterangan

Umumnya, fungsi yang didaftarkan oleh panggilan ke at_quick_exit() dipanggil dalam urutan terbalik pendaftaran mereka. Urutan ini tidak berlaku untuk fungsi yang terdaftar setelah fungsi terdaftar lainnya telah dipanggil. Tidak ada objek yang dihancurkan ketika quick_exit() dipanggil. Jika kontrol meninggalkan fungsi terdaftar yang dipanggil oleh quick_exit() karena fungsi tidak menyediakan handler untuk pengecualian yang dilemparkan, std::terminate() dipanggil. Fungsi yang terdaftar melalui at_quick_exit() dipanggil oleh utas yang memanggil , yang dapat menjadi utas quick_exit()yang berbeda dari yang mendaftarkannya. Itu berarti fungsi terdaftar tidak boleh mengandalkan identitas objek yang memiliki durasi penyimpanan utas. Setelah memanggil fungsi terdaftar, quick_exit() panggil _Exit(status). Buffer file standar tidak dihapus. Fungsi quick_exit() ini aman sinyal ketika fungsi yang terdaftar at_quick_exit() berada.

system

int system(const char* string);

Fungsi alokasi memori

// 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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C. MSVC tidak mendukung fungsi .aligned_alloc C11 ditentukan aligned_alloc() dengan cara yang tidak kompatibel dengan implementasi Microsoft dari free(), yaitu, yang harus dapat menangani alokasi yang free() sangat selaras.

Konversi string numerik

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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Fungsi konversi karakter dan string multibyte / lebar

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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Fungsi algoritma

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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Fungsi pembuatan angka acak berkualitas rendah

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

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Nilai absolut

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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Pembagian bilangan bulat

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);

Keterangan

Fungsi-fungsi ini memiliki semantik yang ditentukan dalam pustaka standar C.

Baca juga

Referensi File Header
Gambaran Umum Pustaka Standar C++
Keamanan utas di Pustaka Standar C++