<cstdlib>

Inclut l’en-tête <stdlib.h> de la bibliothèque C Standard et ajoute les noms associés à l’espace std de noms. L’inclusion de cet en-tête garantit que les noms déclarés à l’aide d’une liaison externe dans l’en-tête de la bibliothèque C standard sont déclarés dans l’espace std de noms.

Remarque

<stdlib.h> n’inclut pas le type wchar_t.

Spécifications

En-tête : <cstdlib>

Espace de noms :std

Espaces de noms et macros

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

Fonctions Exposition uniquement

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

Fonctions de démarrage et de terminaison

Fonction Description
_Exit Termine le programme sans utiliser de destructeurs ou de fonctions inscrites.
abort Termine le programme sans utiliser de destructeurs.
atexit Inscrit la fonction pour l’arrêt du programme.
exit Détruit les objets avec le stockage statique et le thread, puis retourne le contrôle.
at_quick_exit Inscrit la fonction sans arguments pour l’arrêt du programme.
quick_exit Inscrit la fonction avec des objets conservés pour l’arrêt du programme.
getenv Consultez la référence de la bibliothèque C standard.
system Consultez la référence de la bibliothèque C standard.

_Exit

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

Notes

Le programme est arrêté sans exécuter de destructeurs pour les objets de durée de stockage automatique, thread ou statique et sans appeler les fonctions passées.atexit() La fonction _Exit est signal-safe.

abort

[[noreturn]] void abort() noexcept;

Notes

Le programme est arrêté sans exécuter de destructeurs pour les objets de durée de stockage automatique, thread ou statique et sans appeler les fonctions passées.atexit() La fonction abort est signal-safe.

at_quick_exit

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

Valeur de retour

Zéro si l’inscription réussit, non zéro en cas d’échec.

Notes

Les at_quick_exit() fonctions inscrivent une fonction func, appelée sans arguments lorsqu’elle quick_exit() est appelée. Un appel à at_quick_exit() cela ne se produit pas avant que tous les appels ne quick_exit() réussissent peut-être pas. Les at_quick_exit() fonctions n’introduisent pas de race de données. L’ordre d’inscription peut être indéterminé s’il at_quick_exit() a été appelé à partir de plusieurs threads. Étant donné que at_quick_exit() les inscriptions sont distinctes des atexit() inscriptions, les applications peuvent avoir besoin d’appeler les deux fonctions d’inscription à l’aide du même argument. MSVC prend en charge l’inscription d’au moins 32 fonctions.

atexit

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

Notes

Les atexit() fonctions inscrivent la fonction pointée à func l’appel sans arguments à l’arrêt normal du programme. Un appel à atexit() cela ne se produit pas avant qu’un appel ne exit() réussisse. Les atexit() fonctions n’introduisent pas de race de données.

Valeur de retour

Retourne zéro si l’inscription réussit, sans zéro si elle échoue.

exit

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

Notes

Tout d’abord, les objets ayant une durée de stockage de thread et associés au thread actuel sont détruits.

Ensuite, les objets avec une durée de stockage statique sont détruits et les fonctions inscrites par appel atexit() sont appelées. Les objets automatiques ne sont pas détruits lorsqu’ils exit() sont appelés. Si le contrôle laisse une fonction inscrite appelée parce exit() que la fonction ne fournit pas de gestionnaire pour une exception levée, std::terminate() elle est appelée. Une fonction est appelée une fois pour chaque fois qu’elle est inscrite. Les objets avec une durée de stockage automatique sont tous détruits dans un programme dont main la fonction ne contient aucun objet automatique et exécute l’appel à exit(). Le contrôle peut être transféré directement vers une main telle fonction en lève une exception interceptée main.

Ensuite, tous les flux C ouverts (tels que médiatés par les signatures de fonction déclarées dans <cstdio>) avec des données tampons non écrites sont vidés, tous les flux C ouverts sont fermés et tous les fichiers créés par l’appel tmpfile() sont supprimés.

Enfin, le contrôle est retourné à l’environnement hôte. Lorsqu’il status s’agit de zéro ou EXIT_SUCCESS, une forme définie par l’implémentation de l’arrêt réussi est retournée. MSVC retourne une valeur de zéro. Si status c’est EXIT_FAILUREle cas, MSVC retourne une valeur de 3. Sinon, MSVC retourne la valeur du status paramètre.

getenv

char* getenv(const char* name);

quick_exit

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

Notes

En règle générale, les fonctions inscrites par les appels sont at_quick_exit() appelées dans l’ordre inverse de leur inscription. Cet ordre ne s’applique pas aux fonctions inscrites après l’appel d’autres fonctions inscrites. Aucun objet n’est détruit lorsqu’il quick_exit() est appelé. Si le contrôle laisse une fonction inscrite appelée parce quick_exit() que la fonction ne fournit pas de gestionnaire pour une exception levée, std::terminate() elle est appelée. Une fonction inscrite via at_quick_exit() est appelée par le thread qui appelle quick_exit(), qui peut être un thread différent de celui qui l’a inscrit. Cela signifie que les fonctions inscrites ne doivent pas s’appuyer sur l’identité des objets qui ont une durée de stockage de thread. Après avoir appelé des fonctions inscrites, quick_exit() appelle _Exit(status). Les mémoires tampons de fichiers standard ne sont pas vidées. La fonction quick_exit() est signal-safe lorsque les fonctions inscrites sont at_quick_exit() .

system

int system(const char* string);

Fonctions d’allocation de mémoire

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C. MSVC ne prend pas en charge la aligned_alloc fonction. C11 spécifié aligned_alloc() d’une manière incompatible avec l’implémentation Microsoft de free(), à savoir, qui free() doit être en mesure de gérer des allocations hautement alignées.

Conversions de chaînes numériques

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Fonctions de conversion de chaîne et de caractères multioctets / larges

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Fonctions d’algorithme

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Fonctions de génération de nombres aléatoires de faible qualité

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Valeurs absolues

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Division d'entier

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

Notes

Ces fonctions ont la sémantique spécifiée dans la bibliothèque standard C.

Voir aussi

Informations de référence sur les fichiers d’en-tête
Vue d’ensemble de la bibliothèque standard C++
Sécurité des threads dans la bibliothèque C++ Standard