Freigeben über


<cstdlib>

Enthält den C Standard-Bibliotheksheader <stdlib.h> und fügt dem Namespace die zugehörigen Namen hinzu std . Durch Das Einschließen dieses Headers wird sichergestellt, dass die namen, die mit externer Verknüpfung im C-Standardbibliotheksheader deklariert wurden, im std Namespace deklariert werden.

Hinweis

<stdlib.h> enthält nicht den Typ wchar_t.

Anforderungen

Header: <cstdlib>

Namespace:std

Namespace und Makros

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

Nur Expositionsfunktionen

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

Start- und Beendigungsfunktionen

Funktion Beschreibung
_Exit Beendet das Programm, ohne Destruktoren oder registrierte Funktionen zu verwenden.
abort Beendet das Programm, ohne Destruktoren zu verwenden.
atexit Registriert die Funktion zum Beenden des Programms.
exit Zerstört Objekte mit Thread und statischem Speicher und gibt dann die Steuerung zurück.
at_quick_exit Registriert die Funktion ohne Argumente für die Programmendierung.
quick_exit Registriert die Funktion mit beibehaltenen Objekten für die Programmendierung.
getenv Siehe C-Standardbibliotheksreferenz.
system Siehe C-Standardbibliotheksreferenz.

_Exit

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

Hinweise

Das Programm wird beendet, ohne Destruktoren für Objekte von automatischer, Thread- oder statischer Speicherdauer und ohne Aufruf von Funktionen auszuführen, an die atexit()übergeben wird. Die Funktion _Exit ist signalsicher.

abort

[[noreturn]] void abort() noexcept;

Hinweise

Das Programm wird beendet, ohne Destruktoren für Objekte von automatischer, Thread- oder statischer Speicherdauer und ohne Aufruf von Funktionen auszuführen, an die atexit()übergeben wird. Die Funktion abort ist signalsicher.

at_quick_exit

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

Rückgabewert

Null, wenn die Registrierung erfolgreich ist, ungleich Null, wenn sie fehlschlägt.

Hinweise

Die at_quick_exit() Funktionen registrieren eine Funktion func, die ohne Argumente aufgerufen wird, wenn quick_exit() sie aufgerufen wird. Ein Aufruf dazu at_quick_exit() tritt nicht auf, bevor alle Aufrufe quick_exit() nicht erfolgreich ausgeführt werden. Die at_quick_exit() Funktionen führen kein Datenrennen ein. Die Reihenfolge der Registrierung kann unbestimmt sein, wenn at_quick_exit() von mehr als einem Thread aufgerufen wurde. Da at_quick_exit() registrierungen sich von den atexit() Registrierungen unterscheiden, müssen Anwendungen möglicherweise beide Registrierungsfunktionen mit demselben Argument aufrufen. MSVC unterstützt die Registrierung von mindestens 32 Funktionen.

atexit

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

Hinweise

Die atexit() Funktionen registrieren die Funktion, auf die verwiesen wird, ohne func Argumente bei normalem Programmende aufgerufen zu werden. Ein Aufruf dazu atexit() tritt nicht auf, bevor ein Anruf exit() nicht erfolgreich ausgeführt wird. Die atexit() Funktionen führen kein Datenrennen ein.

Rückgabewert

Gibt Null zurück, wenn die Registrierung erfolgreich ist, nicht null, wenn die Registrierung fehlschlägt.

exit

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

Hinweise

Zunächst werden Objekte mit Threadspeicherdauer und dem aktuellen Thread zugeordnet.

Als Nächstes werden Objekte mit statischer Speicherdauer zerstört und durch Aufrufen atexit() registrierte Funktionen aufgerufen. Automatische Objekte werden nicht zerstört, wenn exit() sie aufgerufen werden. Wenn das Steuerelement eine registrierte Funktion verlässt, die aufgerufen exit() wird, weil die Funktion keinen Handler für eine ausgelöste Ausnahme bereitstellt, std::terminate() wird aufgerufen. Eine Funktion wird einmal aufgerufen, wenn sie registriert ist. Objekte mit automatischer Speicherdauer werden alle in einem Programm zerstört, dessen main Funktion keine automatischen Objekte enthält und den Aufruf exit()ausführt. Die Steuerung kann direkt auf eine main solche Funktion übertragen werden, indem eine Ausnahme ausgelöst wird, die maingefangen ist.

Als Nächstes werden alle geöffneten C-Streams (wie durch die in <cstdio>deklarierten Funktionssignaturen) mit nicht geschriebenen gepufferten Daten geleert, alle geöffneten C-Datenströme geschlossen, und alle dateien, die durch Aufrufe tmpfile() erstellt werden, werden entfernt.

Schließlich wird das Steuerelement an die Hostumgebung zurückgegeben. Wenn status null oder EXIT_SUCCESS, eine implementierungsdefinierte Form des status erfolgreichen Beendens zurückgegeben wird. MSVC gibt einen Wert von Null zurück. Wenn status ja EXIT_FAILURE, gibt MSVC den Wert 3 zurück. Andernfalls gibt MSVC den status Parameterwert zurück.

getenv

char* getenv(const char* name);

quick_exit

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

Hinweise

Im Allgemeinen werden von Aufrufen at_quick_exit() registrierte Funktionen in umgekehrter Reihenfolge ihrer Registrierung aufgerufen. Diese Reihenfolge gilt nicht für Funktionen, die registriert wurden, nachdem andere registrierte Funktionen bereits aufgerufen wurden. Beim Aufruf werden keine Objekte zerstört quick_exit() . Wenn das Steuerelement eine registrierte Funktion verlässt, die aufgerufen quick_exit() wird, weil die Funktion keinen Handler für eine ausgelöste Ausnahme bereitstellt, std::terminate() wird aufgerufen. Eine über at_quick_exit() den Thread registrierte Funktion wird vom Thread aufgerufen, der einen anderen Thread als den thread aufruft quick_exit(), der sie registriert hat. Dies bedeutet, dass registrierte Funktionen nicht auf die Identität von Objekten mit Threadspeicherdauer angewiesen sein sollten. Rufen Sie nach dem Aufrufen registrierter Funktionen quick_exit() auf _Exit(status). Die Standarddateipuffer werden nicht geleert. Die Funktion quick_exit() ist signalsicher, wenn die funktionen registriert at_quick_exit() sind.

system

int system(const char* string);

Speicherzuweisungsfunktionen

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf. MSVC unterstützt die aligned_alloc Funktion nicht. C11 in einer Weise angegeben aligned_alloc() , die mit der Microsoft-Implementierung von free(), nämlich nicht kompatibel ist, die free() in der Lage sein muss, hoch ausgerichtete Zuordnungen zu verarbeiten.

Numerische Zeichenfolgenkonvertierungen

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Multibyte/breite Zeichenfolgen- und Zeichenkonvertierungsfunktionen

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Algorithmusfunktionen

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Funktionen für die Generierung von zufälligen Zahlen mit niedriger Qualität

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Absolute Werte

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Ganzzahldivision

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

Hinweise

Diese Funktionen weisen die in der C-Standardbibliothek angegebene Semantik auf.

Siehe auch

Headerdateienreferenz
Übersicht über die C++-Standardbibliothek
Threadsicherheit in der C++-Standardbibliothek