<cstdlib>

Включает заголовок <stdlib.h> стандартной библиотеки C и добавляет связанные имена в std пространство имен. В том числе этот заголовок гарантирует, что имена, объявленные с помощью внешней компоновки в заголовке стандартной библиотеки C, объявляются в std пространстве имен.

Примечание.

<stdlib.h> не включает тип wchar_t.

Требования

Заголовок: <cstdlib>

Пространство именstd:

Пространство имен и макросы

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

Функции запуска и завершения

Function Description
_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() , удаляются.

Наконец, элемент управления возвращается в среду узла. Если status значение равно нулю или EXIT_SUCCESSвозвращается определяемая реализацией форма успешного завершения состояния. MSVC возвращает значение нуля. В противном случае statusEXIT_FAILUREMSVC возвращает значение 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, указанный aligned_alloc() таким образом, что несовместим с реализацией free()Майкрософт , а именно, которая 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++