<cstdlib>
Zawiera nagłówek <stdlib.h>
biblioteki standardowej języka C i dodaje skojarzone nazwy do std
przestrzeni nazw. Dołączenie tego nagłówka gwarantuje, że nazwy zadeklarowane przy użyciu linków zewnętrznych w nagłówku standardowej std
biblioteki języka C są deklarowane w przestrzeni nazw.
Uwaga
<stdlib.h>
nie zawiera typu wchar_t
.
Wymagania
Nagłówek: <cstdlib>
Przestrzeń nazw: std
Przestrzeń nazw i makra
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
Funkcje tylko ekspozycji
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*);
Funkcje uruchamiania i kończenia
Function | opis |
---|---|
_Exit |
Przerywa program bez używania destruktorów ani zarejestrowanych funkcji. |
abort |
Przerywa program bez używania destruktorów. |
atexit |
Rejestruje funkcję zakończenia programu. |
exit |
Niszczy obiekty z magazynem wątku i statycznym, a następnie zwraca kontrolę. |
at_quick_exit |
Funkcja Registers bez argumentów zakończenia programu. |
quick_exit |
Rejestruje funkcję z zachowanymi obiektami na potrzeby zakończenia programu. |
getenv |
Zobacz dokumentację biblioteki standardowej języka C. |
system |
Zobacz dokumentację biblioteki standardowej języka C. |
_Exit
[[noreturn]] void _Exit(int status) noexcept;
Uwagi
Program jest przerywany bez wykonywania destruktorów dla obiektów czasu trwania automatycznego, wątku lub magazynu statycznego i bez wywoływania funkcji przekazywanych do atexit()
programu . Funkcja _Exit
jest bezpieczna zasygnalizowo.
abort
[[noreturn]] void abort() noexcept;
Uwagi
Program jest przerywany bez wykonywania destruktorów dla obiektów czasu trwania automatycznego, wątku lub magazynu statycznego i bez wywoływania funkcji przekazywanych do atexit()
programu . Funkcja abort
jest bezpieczna zasygnalizowo.
at_quick_exit
int at_quick_exit(c-atexit-handler * func) noexcept;
int at_quick_exit(atexit-handler * func) noexcept;
Wartość zwracana
Zero, jeśli rejestracja powiedzie się, a nie zero, jeśli zakończy się niepowodzeniem.
Uwagi
Funkcje at_quick_exit()
rejestrują funkcję func
, która jest wywoływana bez argumentów, gdy quick_exit()
jest wywoływana. Połączenie at_quick_exit()
z tym nie następuje, zanim wszystkie wywołania mogą quick_exit()
się nie powieść. Funkcje at_quick_exit()
nie wprowadzają wyścigu danych. Kolejność rejestracji może być nieokreślona, jeśli at_quick_exit()
została wywołana z więcej niż jednego wątku. Ponieważ at_quick_exit()
rejestracje różnią się od atexit()
rejestracji, aplikacje mogą wymagać wywołania obu funkcji rejestracji przy użyciu tego samego argumentu. Program MSVC obsługuje rejestrację co najmniej 32 funkcji.
atexit
int atexit(c-atexit-handler * func) noexcept;
int atexit(atexit-handler * func) noexcept;
Uwagi
Funkcje atexit()
rejestrują funkcję wskazywaną func
przez wywołanie bez argumentów po normalnym zakończeniu programu. Połączenie atexit()
z tym nie następuje, zanim wywołanie exit()
metody nie powiedzie się. Funkcje atexit()
nie wprowadzają wyścigu danych.
Wartość zwracana
Zwraca zero, jeśli rejestracja powiedzie się, a niezero, jeśli zakończy się niepowodzeniem.
exit
[[noreturn]] void exit(int status);
Uwagi
Najpierw obiekty z czasem trwania magazynu wątków i skojarzone z bieżącym wątkiem są niszczone.
Następnie obiekty z czasem trwania magazynu statycznego są niszczone, a wywoływane są funkcje zarejestrowane przez wywołanie atexit()
. Obiekty automatyczne nie są niszczone, gdy exit()
jest wywoływany. Jeśli kontrolka pozostawia zarejestrowaną funkcję wywoływaną przez exit()
, ponieważ funkcja nie udostępnia procedury obsługi dla wyjątku zgłaszanego, std::terminate()
jest wywoływana. Funkcja jest wywoływana raz za każdym razem, gdy jest zarejestrowana. Obiekty z automatycznym czasem trwania magazynu są niszczone w programie, którego main
funkcja nie zawiera żadnych obiektów automatycznych i wykonuje wywołanie metody exit()
. Kontrolkę można przenieść bezpośrednio do takiej main
funkcji, zgłaszając wyjątek przechwycony w main
pliku .
Następnie wszystkie otwarte strumienie języka C (obsługiwane przez sygnatury funkcji zadeklarowane w <cstdio>
programie ) z niepisanymi buforowymi danymi są opróżniane, wszystkie otwarte strumienie języka C są zamykane, a wszystkie pliki utworzone przez wywołanie tmpfile()
zostaną usunięte.
Na koniec kontrolka jest zwracana do środowiska hosta. Gdy status
wartość to zero lub EXIT_SUCCESS
, zwracana jest zdefiniowana przez implementację forma pomyślnego zakończenia stanu. Funkcja MSVC zwraca wartość zero. Jeśli status
parametr ma EXIT_FAILURE
wartość , funkcja MSVC zwraca wartość 3. W przeciwnym razie funkcja MSVC zwraca wartość parametru status
.
getenv
char* getenv(const char* name);
quick_exit
[[noreturn]] void quick_exit(int status) noexcept;
Uwagi
Ogólnie rzecz biorąc, funkcje zarejestrowane przez wywołania są at_quick_exit()
wywoływane w odwrotnej kolejności ich rejestracji. Ta kolejność nie ma zastosowania do funkcji zarejestrowanych po wywołaniu innych zarejestrowanych funkcji. Żadne obiekty nie są niszczone, gdy quick_exit()
jest wywoływany. Jeśli kontrolka pozostawia zarejestrowaną funkcję wywoływaną przez quick_exit()
, ponieważ funkcja nie udostępnia procedury obsługi dla wyjątku zgłaszanego, std::terminate()
jest wywoływana. Funkcja zarejestrowana za pośrednictwem at_quick_exit()
jest wywoływana przez wątek wywołujący quick_exit()
element , który może być innym wątkiem niż ta, która ją zarejestrowała. Oznacza to, że zarejestrowane funkcje nie powinny polegać na tożsamości obiektów, które mają czas trwania magazynu wątków. Po wywołaniu zarejestrowanych funkcji quick_exit()
wywołaj metodę _Exit(status)
. Standardowe plików nie są opróżniane. Funkcja quick_exit()
jest bezpieczna za pomocą sygnału, gdy funkcje zarejestrowane at_quick_exit()
w programie są.
system
int system(const char* string);
Funkcje alokacji pamięci
// 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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C. Program MSVC nie obsługuje aligned_alloc
funkcji . C11 określony aligned_alloc()
w sposób niezgodny z implementacją firmy Microsoft programu free()
, a free()
mianowicie musi być w stanie obsługiwać alokacje o wysokim stopniu wyrównania.
Konwersje ciągów liczbowych
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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Funkcje konwersji wielobajtowych/szerokich ciągów i znaków
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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Funkcje algorytmów
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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Funkcje generowania liczb losowych o niskiej jakości
int rand();
void srand(unsigned int seed);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Wartości bezwzględne
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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Dzielenie liczb całkowitych
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);
Uwagi
Te funkcje mają semantyka określona w standardowej bibliotece języka C.
Zobacz też
Odwołanie do plików nagłówka
Standardowa biblioteka C++ — przegląd
Bezpieczeństwo wątku w standardowej bibliotece C++