Compartir a través de


<cstdlib>

Incluye el encabezado <stdlib.h> de la biblioteca estándar de C y agrega los nombres asociados al espacio de nombres std. Incluir este encabezado también garantiza que los nombres declarados mediante vinculación externa en el encabezado de la Biblioteca Estándar C se declaren en el espacio de nombres std.

Nota:

<stdlib.h> no incluye el tipo wchar_t.

Requisitos

Encabezado: <cstdlib>

Espacio de nombres: std

Espacio de nombres y 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

Funciones de solo exposición

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

Funciones de inicio y finalización

Función Descripción
_Exit Finaliza el programa sin usar destructores ni funciones registradas.
abort Finaliza el programa sin usar destructores.
atexit Registra la función para la finalización del programa.
exit Destruye objetos con almacenamiento estático y de subproceso y, después, devuelve el control.
at_quick_exit Registra la función sin argumentos para la finalización del programa.
quick_exit Registra la función con objetos conservados para la finalización del programa.
getenv Consulte la referencia de la biblioteca estándar de C.
system Consulte la referencia de la biblioteca estándar de C.

_Exit

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

Comentarios

El programa finaliza sin ejecutar los destructores para los objetos de duración automática, de subproceso o de almacenamiento estático y sin llamar a las funciones pasadas a atexit(). La función _Exit es de señal segura.

abort

[[noreturn]] void abort() noexcept;

Comentarios

El programa finaliza sin ejecutar los destructores para los objetos de duración automática, de subproceso o de almacenamiento estático y sin llamar a las funciones pasadas a atexit(). La función abort es de señal segura.

at_quick_exit

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

Valor devuelto

Cero si el registro se realiza correctamente, distinto de cero si se produce un error.

Comentarios

Las funciones at_quick_exit() registran una función func, a la que se llama sin argumentos cuando se llama a quick_exit(). Una llamada a at_quick_exit() que no se produzca antes de todas las llamadas a quick_exit() puede que no se realice correctamente. Las funciones at_quick_exit() no presentan una carrera de datos. El orden de registro puede ser indeterminado si at_quick_exit() se llamó desde más de un subproceso. Dado que los registros at_quick_exit() son distintos de los registros atexit(), es posible que las aplicaciones necesiten llamar a ambas funciones de registro con el mismo argumento. MSVC admite el registro de al menos 32 funciones.

atexit

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

Comentarios

Las funciones atexit() registran la función apuntada por func para ser llamada sin argumentos a la finalización normal del programa. Una llamada a atexit() que no se produzca antes de una llamada a exit() puede que no se realice correctamente. Las funciones atexit() no presentan una carrera de datos.

Valor devuelto

Devuelve cero si el registro se realiza correctamente, distinto de cero si se produce un error.

exit

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

Comentarios

En primer lugar, se destruyen los objetos con duración de almacenamiento de subprocesos y asociados al subproceso actual.

A continuación, se destruyen los objetos con duración de almacenamiento estático y se llama a las funciones registradas mediante una llamada a atexit(). Los objetos automáticos no se destruyen cuando se llama aexit(). Si el control sale de una función registrada llamada por exit() porque la función no proporciona un controlador para una excepción iniciada, se llama a std::terminate(). Una función se llama una vez por cada vez que se registra. Los objetos con duración de almacenamiento automático se destruyen en un programa cuya función main no contiene objetos automáticos y ejecuta la llamada a exit(). El control se puede transferir directamente a esta función main iniciando una excepción detectada en main.

A continuación, todos los flujos C abiertos (según las firmas de las funciones declaradas en <cstdio>) con datos no escritos en el buffer se vacían, se cierran todos los flujos C abiertos y se eliminan todos los archivos creados al llamar a tmpfile().

Por último, el control se devuelve al entorno host. Cuando status es cero o EXIT_SUCCESS, se devuelve una forma definida por la implementación del estado de finalización correcta. MSVC devuelve un valor de cero. Si status es EXIT_FAILURE, MSVC devuelve un valor de 3. En caso contrario, MSVC devuelve el valor de parámetro status.

getenv

char* getenv(const char* name);

quick_exit

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

Comentarios

Por lo general, se llama a las funciones registradas por las llamadas a at_quick_exit() en el orden inverso de su registro. Esta orden no se aplica a las funciones registradas después de que otras funciones registradas ya han sido llamadas. No se destruye ningún objeto cuando se llama a quick_exit(). Si el control sale de una función registrada llamada por quick_exit() porque la función no proporciona un controlador para una excepción iniciada, se llama a std::terminate(). Una función registrada a través de at_quick_exit() es invocada por el subproceso que llama a quick_exit(), que puede ser un subproceso diferente al que lo registró. Esto significa que las funciones registradas no deben basarse en la identidad de los objetos que tienen una duración de almacenamiento de subprocesos. Después de llamar a las funciones registradas, quick_exit() llama a _Exit(status). Los búferes de archivos estándar no se vacían. La función quick_exit() es de señal segura cuando las funciones registradas con at_quick_exit() lo son.

system

int system(const char* string);

Funciones de asignación de memoria

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C. MSVC no admite la función aligned_alloc. C11 especificó aligned_alloc() de una manera no compatible con la implementación de Microsoft de free(), es decir, que free() debe poder controlar asignaciones muy alineadas.

Conversiones de cadenas numéricas

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

Funciones de conversión de cadenas y caracteres multibyte/ancho

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

Funciones de algoritmo

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

Funciones de generación de números aleatorios de baja calidad

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

Valores absolutos

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

División de enteros

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

Comentarios

Estas funciones tienen la semántica especificada en la biblioteca estándar de C.

Consulte también

Referencia de archivos de encabezado
Información general sobre la biblioteca estándar de C++
Seguridad para subprocesos en la biblioteca estándar de C++