通用函数库在头文件stdlib.h中声明,比较庞大,主要分为以下几大类:存储分配、随机数生成、数字转换与整型运算、程序退出与环境通信、搜索与排序、多字节与宽字符的转换。由于汲及到存储分配、环境通信等,因此它们的大多数也依赖于操作系统。glibc中,通用函数库的核心实现在stdlib和malloc两个目录下。
stdlib.h中导出的所有标准接口如下:
1、malloc,calloc,realloc,free:内存分配与释放。分配的内存不进行任何初始化,保证对任何数据类型正确对齐
2、rand,srand,RAND_MAX:产生伪随机数,rand范围的上限由RAND_MAX指定,至少为32767
3、atof,atoi,atol,atoll:将字符串的初始部分转换成相应类型的数字。
4、strtod,strtof,strtold,strtol,strtoll,strtoul,strtoull:同上,但比上面的转换函数更完善。实际上glibc中,上面的几个转换函数都是直接调用这里的函数来实现的。
5、abort,atexit,exit,_Exit,EXIT_FAILURE,EXIT_SUCCESS:终止程序。exit在终止前会调用用atexit注册的各个函数,而abort和_Exit则不会。
6、getenv:返回指定环境参数name的对应值。
7、system:将字符串参数传递到操作系统的shell中,按实现定义的执行它。
8、qsort,bsearch:qsort对含有count个元素(每个元素的大小为size)的数组base按升序排序、bsearch在数组中搜索元素key。
9、abs,labs,llabs:返回参数的绝对值。
10、div,ldiv,lldiv:计算n除以d的商和余数,放在div_t,ldiv_t,lldiv_t结构中返回,结构中的成员quot=n/d,成员rem=n%d。
11、mblen,mbtowc,wctomb,MB_CUR_MAX:判断s的前n个字节是否是有效的多字节字符、多字节字符s转换成宽字符pwc、宽字符pwc转换成多字节字符s、 MB_CUR_MAX表示多字节字符的最大字节数。
12、mbstowcs,wcstombs:多字节字符串与宽字符串之间的转换,返回转换后的字符数(不包括null终止符),发现错误则返回-1(转换成size_t)。
C标准库源码解剖(14):通用函数stdlib.h
最新推荐文章于 2023-12-23 17:22:23 发布