<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_SUCCESS
0이면 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 표준 라이브러리에 지정된 의미 체계가 있습니다.