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

Obszaru 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 mainpliku .

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_FAILUREwartość , 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 bufory 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++