Namespaces
Variants

Standard library header <cstdlib>

From cppreference.net
Standard library headers

此头文件最初作为 <stdlib.h> 存在于C标准库中。

此头文件提供杂项实用工具。此处定义的符号被多个库组件使用。

目录

类型

结构体类型,由 std::div 返回
(类型别名)
结构体类型,由 std::ldiv
(类型别名)
(C++11)
结构体类型,由 std::lldiv 返回
(类型别名)
sizeof 运算符返回的无符号整数类型
(类型定义)

宏常量

指示程序执行状态
(宏常量)
MB_CUR_MAX
当前区域设置下多字节字符的最大字节数
(宏常量)
实现定义的空指针常量
(宏常量)
std::rand 可生成的最大可能值
(宏常量)

函数

进程控制
导致程序异常终止(不进行清理操作)
(函数)
导致程序正常终止并进行清理工作
(函数)
(C++11)
导致程序快速终止而不完全清理资源
(函数)
(C++11)
导致程序正常终止而不进行清理
(函数)
注册一个在调用 std::exit() 时执行的函数
(函数)
注册在调用 std::quick_exit 时要执行的函数
(函数)
调用主机环境的命令处理器
(函数)
访问环境变量列表
(函数)
内存管理
分配内存
(函数)
分配对齐内存
(函数)
分配并清零内存
(函数)
扩展或缩小先前分配的内存块
(函数)
释放先前分配的内存
(函数)
数值字符串转换
将字节字符串转换为浮点数值
(函数)
将字节字符串转换为整数值
(函数)
将字节字符串转换为整数值
(函数)
将字节字符串转换为无符号整数值
(函数)
将字节字符串转换为浮点数值
(函数)
宽字符串操作
返回下一个多字节字符的字节数
(函数)
将下一个多字节字符转换为宽字符
(函数)
将宽字符转换为其多字节表示形式
(函数)
将窄多字节字符串转换为宽字符串
(函数)
将宽字符串转换为窄多字节字符串
(函数)
杂项算法与数学
生成伪随机数
(函数)
初始化伪随机数生成器
(函数)
对指定范围的元素进行未指定类型的排序
(函数)
在数组中搜索未指定类型的元素
(函数)
计算整型数值的绝对值 ( |x| )
(函数)
计算整数除法的商和余数
(函数)

概要

namespace std {
  using size_t =  /* 查看描述 */; // freestanding
  using div_t =   /* 查看描述 */; // freestanding
  using ldiv_t =  /* 查看描述 */; // freestanding
  using lldiv_t = /* 查看描述 */; // freestanding
}
#define NULL         /* 见描述 */ // freestanding
#define EXIT_FAILURE /* 见描述 */ // 独立环境
#define EXIT_SUCCESS /* 参见描述 */ // 独立环境
#define RAND_MAX     /* 参见说明 */
#define MB_CUR_MAX   /* 参见描述 */
namespace std {
  // 仅用于展示的函数类型别名
  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 /* 比较谓词 */ =           // 仅作展示用途
    int(const void*, const void*);
  // 起始与终止
  [[noreturn]] void abort() noexcept;                       // freestanding
  int atexit(/* c-atexit-handler */* func) noexcept;        // freestanding
  int atexit(/* atexit-handler */* func) noexcept;          // freestanding
  int at_quick_exit(/* c-atexit-handler */* func) noexcept; // freestanding
  int at_quick_exit(/* atexit-handler */* func) noexcept;   // freestanding
  [[noreturn]] void exit(int status);                       // freestanding
  [[noreturn]] void _Exit(int status) noexcept;             // freestanding
  [[noreturn]] void quick_exit(int status) noexcept;        // freestanding
  char* getenv(const char* name);
  int system(const char* string);
  // C 库内存分配
  void* aligned_alloc(size_t alignment, size_t size);
  void* calloc(size_t nmemb, size_t size);
  void free(void* ptr);
  void* malloc(size_t size);
  void* realloc(void* ptr, size_t size);
  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);
  // 多字节/宽字符串与字符转换函数
  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);
  // C 标准库算法
  void* bsearch(const void* key, const void* base,  // freestanding
                size_t nmemb, size_t size, /* c-compare-pred */* compar);
  void* bsearch(const void* key, const void* base,  // freestanding
                size_t nmemb, size_t size, /* 比较谓词 */* compar);
  void qsort(void* base, size_t nmemb, size_t size, // freestanding
             /* c-compare-pred */* compar);
  void qsort(void* base, size_t nmemb, size_t size, // freestanding
             /* 比较谓词 */* compar);
  // 低质量随机数生成
  int rand();
  void srand(unsigned int seed);
  // 绝对值
  constexpr int abs(int j);                       // freestanding
  constexpr long int abs(long int j);             // freestanding
  constexpr long long int abs(long long int j);   // freestanding
  constexpr /* 浮点类型 */
    abs(/* 浮点类型 */ j);             // freestanding-deleted
  constexpr long int labs(long int j);            // freestanding
  constexpr long long int llabs(long long int j); // freestanding
  constexpr div_t div(int numer, int denom);                         // freestanding
  constexpr ldiv_t div(long int numer, long int denom);              // freestanding
  constexpr lldiv_t div(long long int numer, long long int denom);   // freestanding
  constexpr ldiv_t ldiv(long int numer, long int denom);             // 独立环境
  constexpr lldiv_t lldiv(long long int numer, long long int denom); // freestanding
}

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。

DR 适用版本 发布行为 正确行为
LWG 286 C++98 未在 <cstdlib> 中提供 size_t 的定义 已提供

另请参阅