<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>
kumpulan nama XML: 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
Fungsi | 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.
Lihat juga
Referensi File Header
Gambaran Umum Pustaka Standar C++
Keamanan utas di Pustaka Standar C++