stdlib
stdlib (Standard Library) 提供 C 标准库的通用工具函数,涵盖随机数生成、动态内存分配、路径解析与临时文件管理等功能。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| initstate | 初始化随机数生成状态数组 |
| lrand48 | 产生正的长整型随机数 |
| mkstemp | 创建并打开唯一的临时文件 |
| nrand48 | 使用指定种子数组产生正随机数 |
| posix_memalign | 按指定对齐方式分配内存 |
| random | 产生0~RAND_MAX范围内的伪随机数 |
| realpath | 将相对路径转换为绝对路径 |
| seed48 | 设置48位随机数种子 |
| setstate | 设置随机数生成器的状态数组 |
| srand48 | 设置48位随机数种子 |
| srandom | 设置random函数的随机数种子 |
Functions
initstate
头文件清单
功能说明
- 初始化随机数生成器的状态数组
- 使用指定的种子值初始化随机数状态表
- 返回指向前一个状态数组的指针
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| seed | unsigned int | 随机数种子值 | 0 ~ 4294967295 |
| state | char * | 状态数组指针 | 非NULL |
| size | size_t | 状态数组大小 | 8 ~ 256 |
返回值
- 返回类型:char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL | 前一个状态数组指针 | 成功初始化且存在前一个状态 |
| NULL | 无前一个状态 | 首次初始化 |
lrand48
头文件清单
功能说明
- 使用48位随机数生成算法产生一个正的长整型随机数
- 返回值范围为0到2^31-1
- 使用内部48位种子状态
返回值
- 返回类型:long int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非负long int | 正的长整型随机数 | 调用成功,范围0~2147483647 |
mkstemp
头文件清单
功能说明
- 创建并打开一个唯一的临时文件
- 模板参数末尾必须为6个X字符,函数将X替换为唯一字符
- 返回该临时文件的文件描述符
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| template | char * | 文件名模板,末尾须为6个X字符 | 非NULL,长度足够容纳替换后的文件名 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| template | char * | 替换后的实际文件名,由函数在原缓冲区中修改 |
返回值
- 返回类型:int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非负int | 文件描述符 | 创建临时文件成功 |
| -1 | 创建失败 | 无法创建唯一文件名或打开文件失败 |
nrand48
头文件清单
功能说明
- 使用指定的48位种子数组产生一个正随机数
- 返回值范围为0到2^31-1
- 不修改调用者的种子数组
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| xsubi | unsigned short [3] | 48位种子数组 | 数组每个元素 0 ~ 65535 |
返回值
- 返回类型:long int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非负long int | 正随机数 | 调用成功,范围0~2147483647 |
posix_memalign
头文件清单
功能说明
- 按指定对齐方式分配内存
- 分配的内存地址按alignment参数对齐
- 返回的内存指针通过memptr输出参数返回
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| alignment | size_t | 内存对齐字节数 | 2的幂次方且为void *大小的整数倍 |
| size | size_t | 需分配的内存字节数 | 0 ~ SIZE_MAX |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| memptr | void ** | 指向分配的内存起始地址,由调用方分配memptr指针、函数填充指向的内存地址 |
返回值
- 返回类型:int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 0 | 分配成功 | 内存分配成功 |
| EINVAL | 参数无效 | alignment不是2的幂或不是void *大小的倍数 |
| ENOMEM | 内存不足 | 无法分配足够的内存 |
random
头文件清单
功能说明
- 产生0~RAND_MAX范围内的伪随机数
- 使用非线性加法反馈随机数生成器
- 默认使用31位种子状态
返回值
- 返回类型:long int
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非负long int | 随机数 | 调用成功,范围0~RAND_MAX(0x7fffffff) |
realpath
头文件清单
功能说明
- 将相对路径转换为绝对路径
- 解析路径中的符号链接、"."和".."等组件
- 返回解析后的绝对路径字符串指针
前置条件
- 调用时序约束:resolved_path缓冲区长度必须不小于PATH_MAX
- 依赖关系:path所指的文件或目录必须存在
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| path | const char *__restrict | 待转换的路径名 | 非NULL,路径长度不超过PATH_MAX |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| resolved_path | char *__restrict | 解析后的绝对路径;若为NULL则由函数内部分配 |
返回值
- 返回类型:char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| 非NULL | 绝对路径指针 | 转换成功 |
| NULL | 转换失败 | 路径不存在或无法解析 |
seed48
头文件清单
功能说明
- 设置48位随机数种子
- 使用指定的3个unsigned short值初始化48位种子的高位、中位、低位
- 初始化内部的乘加参数
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| seed16v | unsigned short [3] | 48位种子值数组 | 数组每个元素 0 ~ 65535 |
返回值
- 返回类型:unsigned short *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| unsigned short * | 前一个种子数组指针 | 成功设置种子 |
setstate
头文件清单
功能说明
- 设置随机数生成器的状态数组
- 切换随机数生成器使用新的状态表
- 返回指向前一个状态数组的指针
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| state | char * | 新的状态数组指针 | 非NULL,须为initstate初始化过的状态数组 |
返回值
- 返回类型:char *
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| char * | 前一个状态数组指针 | 成功切换状态 |
srand48
头文件清单
功能说明
- 设置48位随机数种子
- 使用指定的long值初始化48位种子的高32位
- 种子的低16位固定设为0x330E
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| seedval | long | 种子值 | 0 ~ 2147483647 |
srandom
头文件清单
功能说明
- 设置random函数的随机数种子
- 使用指定的种子值初始化随机数生成器状态
- 种子值不同将产生不同的随机数序列
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| seed | unsigned int | 随机数种子 | 0 ~ 4294967295 |