查看系统函数实现

查看C语言系统函数实现

为什么找不到实现

以malloc为例,可以很快找到malloc的头文件定义(/usr/include/stdlib.h),但是,无法找到其源文件。这是因为stdlib.h是GCC编译器提供的接口文件,不同的编译器接口标准不同,也就是说编译器只能触及到接口层。而内存由Linux内核分配,malloc属于系统函数,因此,malloc封装在内核层,以防止我们不小心修改了。

在/lib64/下,可以发现有个软连接 libc.so.6 (使用软连接是担心用户误删真正的so文件),可以看到,这个动态链接库里,就有malloc的实现

20221217194838

所以,如果我们只是想要查看源码实现,需要下载glibc代码

glibc下载

非root用户执行以下命令要加sudo

安装git:yum install -y git

进入目录:cd /usr/

下载地址:git clone git://sourceware.org/git/glibc.git

如果提示: fatal: 不能为 ‘glibc’ 创建工作区目录。

则执行:chmod o+w ./ /usr/的other用户添加写权限(这里的other是指的git吗?而不是当前用户在写glibc)

其中,malloc函数的代码实现在glibc/malloc/目录下(malloc.c及其相关代码),主要分为两步:
检查是否需要调用hook,调用__libc_malloc(其调用最核心的内存分配函数__init_malloc)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值