跳转至

stdlib

stdlib (Standard Library) 提供 C 标准库的通用工具函数,涵盖随机数生成、动态内存分配、路径解析与临时文件管理等功能。

头文件清单

#include "open_source/musl/include/stdlib.h"

接口清单

接口名称 功能简述
initstate 初始化随机数生成状态数组
lrand48 产生正的长整型随机数
mkstemp 创建并打开唯一的临时文件
nrand48 使用指定种子数组产生正随机数
posix_memalign 按指定对齐方式分配内存
random 产生0~RAND_MAX范围内的伪随机数
realpath 将相对路径转换为绝对路径
seed48 设置48位随机数种子
setstate 设置随机数生成器的状态数组
srand48 设置48位随机数种子
srandom 设置random函数的随机数种子

Functions

initstate

char *initstate(unsigned int, char *, size_t)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 初始化随机数生成器的状态数组
  • 使用指定的种子值初始化随机数状态表
  • 返回指向前一个状态数组的指针

入参

名称 参数类型 详细说明 约束取值范围
seed unsigned int 随机数种子值 0 ~ 4294967295
state char * 状态数组指针 非NULL
size size_t 状态数组大小 8 ~ 256

返回值

  • 返回类型:char *
返回值 文字含义 触发场景
非NULL 前一个状态数组指针 成功初始化且存在前一个状态
NULL 无前一个状态 首次初始化

lrand48

long int lrand48(void)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 使用48位随机数生成算法产生一个正的长整型随机数
  • 返回值范围为0到2^31-1
  • 使用内部48位种子状态

返回值

  • 返回类型:long int
返回值 文字含义 触发场景
非负long int 正的长整型随机数 调用成功,范围0~2147483647

mkstemp

int mkstemp(char *)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 创建并打开一个唯一的临时文件
  • 模板参数末尾必须为6个X字符,函数将X替换为唯一字符
  • 返回该临时文件的文件描述符

入参

名称 参数类型 详细说明 约束取值范围
template char * 文件名模板,末尾须为6个X字符 非NULL,长度足够容纳替换后的文件名

出参

名称 数据类型 输出说明
template char * 替换后的实际文件名,由函数在原缓冲区中修改

返回值

  • 返回类型:int
返回值 文字含义 触发场景
非负int 文件描述符 创建临时文件成功
-1 创建失败 无法创建唯一文件名或打开文件失败

nrand48

long int nrand48(unsigned short [3])

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 使用指定的48位种子数组产生一个正随机数
  • 返回值范围为0到2^31-1
  • 不修改调用者的种子数组

入参

名称 参数类型 详细说明 约束取值范围
xsubi unsigned short [3] 48位种子数组 数组每个元素 0 ~ 65535

返回值

  • 返回类型:long int
返回值 文字含义 触发场景
非负long int 正随机数 调用成功,范围0~2147483647

posix_memalign

int posix_memalign(void **, size_t, size_t)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 按指定对齐方式分配内存
  • 分配的内存地址按alignment参数对齐
  • 返回的内存指针通过memptr输出参数返回

入参

名称 参数类型 详细说明 约束取值范围
alignment size_t 内存对齐字节数 2的幂次方且为void *大小的整数倍
size size_t 需分配的内存字节数 0 ~ SIZE_MAX

出参

名称 数据类型 输出说明
memptr void ** 指向分配的内存起始地址,由调用方分配memptr指针、函数填充指向的内存地址

返回值

  • 返回类型:int
返回值 文字含义 触发场景
0 分配成功 内存分配成功
EINVAL 参数无效 alignment不是2的幂或不是void *大小的倍数
ENOMEM 内存不足 无法分配足够的内存

random

long int random(void)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 产生0~RAND_MAX范围内的伪随机数
  • 使用非线性加法反馈随机数生成器
  • 默认使用31位种子状态

返回值

  • 返回类型:long int
返回值 文字含义 触发场景
非负long int 随机数 调用成功,范围0~RAND_MAX(0x7fffffff)

realpath

char *realpath(const char *__restrict, char *__restrict)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 将相对路径转换为绝对路径
  • 解析路径中的符号链接、"."和".."等组件
  • 返回解析后的绝对路径字符串指针

前置条件

  • 调用时序约束:resolved_path缓冲区长度必须不小于PATH_MAX
  • 依赖关系:path所指的文件或目录必须存在

入参

名称 参数类型 详细说明 约束取值范围
path const char *__restrict 待转换的路径名 非NULL,路径长度不超过PATH_MAX

出参

名称 数据类型 输出说明
resolved_path char *__restrict 解析后的绝对路径;若为NULL则由函数内部分配

返回值

  • 返回类型:char *
返回值 文字含义 触发场景
非NULL 绝对路径指针 转换成功
NULL 转换失败 路径不存在或无法解析

seed48

unsigned short *seed48(unsigned short [3])

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 设置48位随机数种子
  • 使用指定的3个unsigned short值初始化48位种子的高位、中位、低位
  • 初始化内部的乘加参数

入参

名称 参数类型 详细说明 约束取值范围
seed16v unsigned short [3] 48位种子值数组 数组每个元素 0 ~ 65535

返回值

  • 返回类型:unsigned short *
返回值 文字含义 触发场景
unsigned short * 前一个种子数组指针 成功设置种子

setstate

char *setstate(char *)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 设置随机数生成器的状态数组
  • 切换随机数生成器使用新的状态表
  • 返回指向前一个状态数组的指针

入参

名称 参数类型 详细说明 约束取值范围
state char * 新的状态数组指针 非NULL,须为initstate初始化过的状态数组

返回值

  • 返回类型:char *
返回值 文字含义 触发场景
char * 前一个状态数组指针 成功切换状态

srand48

void srand48(long)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 设置48位随机数种子
  • 使用指定的long值初始化48位种子的高32位
  • 种子的低16位固定设为0x330E

入参

名称 参数类型 详细说明 约束取值范围
seedval long 种子值 0 ~ 2147483647

srandom

void srandom(unsigned int)

头文件清单

#include "open_source/musl/include/stdlib.h"

功能说明

  • 设置random函数的随机数种子
  • 使用指定的种子值初始化随机数生成器状态
  • 种子值不同将产生不同的随机数序列

入参

名称 参数类型 详细说明 约束取值范围
seed unsigned int 随机数种子 0 ~ 4294967295

Macros

RAND_MAX

#define RAND_MAX (0x7fffffff)