Aracılığıyla paylaş


<cstdlib>

C Standard kitaplık üst bilgisini <stdlib.h> içerir ve ilişkili adları std ad alanına ekler. Bu üst bilgi dahil olmak, C standart kitaplık üst bilgisinde dış bağlantı kullanılarak bildirilen adların ad alanında std bildirilmesini sağlar.

Not

<stdlib.h> , türünü wchar_tiçermez.

Gereksinimler

Üst Bilgi: <cstdlib>

Ad alanı: std

Ad Alanı ve Makrolar

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

Yalnızca edat işlevleri

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

Başlatma ve sonlandırma işlevleri

İşlev Açıklama
_Exit Yıkıcıları veya kayıtlı işlevleri kullanmadan programı sonlandırır.
abort Yıkıcıları kullanmadan programı sonlandırır.
atexit Program sonlandırma için işlevi kaydeder.
exit İş parçacığı ve statik depolama ile nesneleri yok eder, ardından denetimi döndürür.
at_quick_exit Program sonlandırma için bağımsız değişkenler olmadan işlevi kaydeder.
quick_exit Program sonlandırma için korunan nesnelerle işlevi kaydeder.
getenv Bkz. C standart kitaplık başvurusu.
system Bkz. C standart kitaplık başvurusu.

_Exit

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

Açıklamalar

Program, otomatik, iş parçacığı veya statik depolama süresi nesneleri için yıkıcılar yürütülmeden ve öğesine geçirilen atexit()işlevler çağrılmadan sonlandırılır. İşlev _Exit sinyal açısından güvenlidir.

abort

[[noreturn]] void abort() noexcept;

Açıklamalar

Program, otomatik, iş parçacığı veya statik depolama süresi nesneleri için yıkıcılar yürütülmeden ve öğesine geçirilen atexit()işlevler çağrılmadan sonlandırılır. İşlev abort sinyal açısından güvenlidir.

at_quick_exit

int at_quick_exit(c-atexit-handler * func) noexcept;
int at_quick_exit(atexit-handler * func) noexcept;

Dönüş Değeri

Kayıt başarılı olursa sıfır, başarısız olursa sıfır değil.

Açıklamalar

at_quick_exit() İşlevler, çağrıldığında quick_exit() bağımsız değişken olmadan çağrılan bir işlevi funckaydeder. Bu çağrı at_quick_exit() , tüm çağrılar quick_exit() başarılı olmadan önce gerçekleşmez. İşlevler at_quick_exit() veri yarışına neden olmaz. Birden fazla iş parçacığından çağrıldığında at_quick_exit() kayıt sırası belirsiz olabilir. Kayıtlar kayıtlardan atexit() farklı olduğundanat_quick_exit(), uygulamaların aynı bağımsız değişkeni kullanarak her iki kayıt işlevini de çağırması gerekebilir. MSVC en az 32 işlevin kaydını destekler.

atexit

int atexit(c-atexit-handler * func) noexcept;
int atexit(atexit-handler * func) noexcept;

Açıklamalar

İşlevler, atexit() normal program sonlandırmada bağımsız değişken olmadan çağrılmak üzere işaret ettiği func işlevi kaydeder. Çağrısı atexit() başarılı olmadan önce bu çağrı exit() gerçekleşmez. İşlevler atexit() veri yarışına neden olmaz.

Dönüş Değeri

Kayıt başarılı olursa sıfır, başarısız olursa sıfır olmayan değerini döndürür.

exit

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

Açıklamalar

İlk olarak, iş parçacığı depolama süresine sahip ve geçerli iş parçacığıyla ilişkili nesneler yok edilir.

Ardından statik depolama süresine sahip nesneler yok edilir ve çağrılarak atexit() kaydedilen işlevler çağrılır. Otomatik nesneler çağrıldığında exit() yok olmaz. İşlev, oluşan bir özel durum için işleyici sağlamadığından denetim tarafından exit() çağrılan kayıtlı bir işlev bırakırsa çağrılır std::terminate() . Bir işlev her kaydedildiğinde bir kez çağrılır. Otomatik depolama süresine sahip nesnelerin tümü, işlevi otomatik nesne içermeyen ve çağrısı exit()yürüten main bir programda yok edilir. Denetimi, içinde yakalanan bir özel durum oluşturarak doğrudan böyle bir main işleve mainaktarılabilir.

Ardından, yazılmamış arabelleğe alınmış veriler içeren tüm açık C akışları (içinde bildirilen <cstdio>işlev imzaları tarafından ortalandığı gibi) boşaltılır, tüm açık C akışları kapatılır ve çağrılarak tmpfile() oluşturulan tüm dosyalar kaldırılır.

Son olarak, denetim konak ortamına döndürülür. sıfır veya EXIT_SUCCESSolduğundastatus, başarılı sonlandırma durumunun uygulama tanımlı bir biçimi döndürülür. MSVC sıfır değerini döndürür. ise status EXIT_FAILURE, MSVC 3 değerini döndürür. Aksi takdirde, MSVC parametre değerini döndürür status .

getenv

char* getenv(const char* name);

quick_exit

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

Açıklamalar

Genel olarak, çağrısı at_quick_exit() tarafından kaydedilen işlevler, kayıtlarının ters sırasına göre çağrılır. Bu sipariş, diğer kayıtlı işlevler zaten çağrıldıktan sonra kaydedilen işlevler için geçerli değildir. Çağrıldığında quick_exit() hiçbir nesne yok olmaz. İşlev, oluşan bir özel durum için işleyici sağlamadığından denetim tarafından quick_exit() çağrılan kayıtlı bir işlev bırakırsa çağrılır std::terminate() . aracılığıyla at_quick_exit() kaydedilen bir işlev, öğesini çağıran quick_exit()iş parçacığı tarafından çağrılır ve bunu kaydedenden farklı bir iş parçacığı olabilir. Bu, kayıtlı işlevlerin iş parçacığı depolama süresi olan nesnelerin kimliğine güvenmemesi gerektiği anlamına gelir. Kayıtlı işlevler çağrıldıktan sonra öğesini quick_exit() çağırır _Exit(status). Standart dosya arabellekleri temizlenmez. ile kaydedilen at_quick_exit() işlevler olduğunda işlev quick_exit() sinyal açısından güvenlidir.

system

int system(const char* string);

Bellek ayırma işlevleri

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir. MSVC işlevi desteklemez aligned_alloc . C11, yüksek oranda hizalanmış ayırmaları işleyebilmesi için Microsoft uygulamasıyla free()free() uyumlu olmayan bir şekilde belirtilmiştiraligned_alloc().

Sayısal dize dönüştürmeleri

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Çok baytlı / geniş dize ve karakter dönüştürme işlevleri

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Algoritma işlevleri

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Düşük kaliteli rastgele sayı oluşturma işlevleri

int rand();
void srand(unsigned int seed);

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Mutlak değerler

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Tamsayı bölme

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

Açıklamalar

Bu işlevler, C standart kitaplığında belirtilen semantiğine sahiptir.

Ayrıca bkz.

Üst Bilgi Dosyaları Başvurusu
C++ Standart Kitaplığına Genel Bakış
C++ Standart Kitaplığında İş Parçacığı Güvenliği