<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
Namespace 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_FAILURE
le 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