다음을 통해 공유


<cstdlib>

C Standard 라이브러리 헤더 <stdlib.h> 를 포함하고 연결된 이름을 네임스페이스에 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*);

시작 및 종료 함수

함수 설명
_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;

Return Value

등록에 성공하면 0, 실패하면 0이 아닙니다.

설명

함수는 at_quick_exit() 호출할 때 quick_exit() 인수 없이 호출되는 함수func를 등록합니다. 이 호출 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() 데이터 경합을 도입하지 않습니다.

Return Value

등록에 성공하면 0을 반환하고, 실패하면 0이 아닌 값을 반환합니다.

exit

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

설명

먼저 스레드 스토리지 기간이 있고 현재 스레드와 연결된 개체가 제거됩니다.

다음으로, 정적 스토리지 기간이 있는 개체가 제거되고 호출 atexit() 을 통해 등록된 함수가 호출됩니다. 자동 개체는 호출될 때 exit() 제거되지 않습니다. 함수가 throw된 예외 std::terminate()exit() 대한 처리기를 제공하지 않기 때문에 컨트롤이 호출한 등록된 함수를 벗어나면 호출됩니다. 함수는 등록될 때마다 한 번 호출됩니다. 자동 스토리지 기간이 있는 개체는 함수에 자동 개체가 main 없고 호출 exit()을 실행하는 프로그램에서 모두 제거됩니다. 컨트롤은 catch된 예외를 main throw하여 이러한 함수로 직접 전송할 수 있습니다 main.

다음으로, 기록되지 않은 버퍼링된 데이터가 있는 열려 있는 모든 C 스트림(선언된 함수 서명에 <cstdio>의해 중재됨)이 플러시되고, 열려 있는 모든 C 스트림이 닫히고, 호출 tmpfile() 을 통해 생성된 모든 파일이 제거됩니다.

마지막으로 컨트롤이 호스트 환경으로 반환됩니다. 0이거나 EXIT_SUCCESS0이면 status 성공적인 종료 상태의 구현 정의 형식이 반환됩니다. MSVC는 0 값을 반환합니다. 이 경우 status MSVC는 EXIT_FAILURE값 3을 반환합니다. 그렇지 않으면 MSVC는 매개 변수 값을 반환합니다 status .

getenv

char* getenv(const char* name);

quick_exit

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

설명

일반적으로 호출 at_quick_exit() 에 의해 등록된 함수는 등록의 역순으로 호출됩니다. 이 순서는 등록된 다른 함수가 이미 호출된 후에 등록된 함수에는 적용되지 않습니다. 호출될 때 quick_exit() 는 개체가 제거되지 않습니다. 함수가 throw된 예외 std::terminate()quick_exit() 대한 처리기를 제공하지 않기 때문에 컨트롤이 호출한 등록된 함수를 벗어나면 호출됩니다. 등록된 at_quick_exit() 함수는 스레드를 호출 quick_exit()하는 스레드에 의해 호출되며, 이는 등록된 스레드와 다른 스레드일 수 있습니다. 즉, 등록된 함수는 스레드 스토리지 기간이 있는 개체의 ID에 의존해서는 안 됩니다. 등록된 함수를 호출한 후 .를 quick_exit() 호출 _Exit(status)합니다. 표준 파일 버퍼는 플러시되지 않습니다. 등록된 at_quick_exit() 함수 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() 할당을 처리할 수 있어야 하는 Microsoft 구현 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++ 표준 라이브러리의 스레드 보안