glibc源代码的阅读

本文介绍了作者在阅读glibc源代码时的经历,从复杂的常用函数到简单的bug测试用例,适合没有基础的读者。glibc源码中包含以bug命名的独立测试程序,便于学习和理解。作者建议从stdio-common目录开始,并提供了下载链接和相关文档资源。文章还提及了可能让人困惑的代码风格,如string目录下的strcpy.c,尽管不遵循最新C标准,但其正确性得到了保证。
摘要由CSDN通过智能技术生成

这两天在看gnu的c语言基本库,刚开始翻看一些常用的函数代码时,感觉怎么这么复杂,后来想了想,也是,这些代码得适应各种场景,各种平台,也就释然了。难的不会,那就看简单的吧,好的事glibc源码里有一些bug测试用例,一般都是以bug开头的C文件,是独立的,可独立编译执行,于是就阅读了几个,确实很有感觉。像我这种没基础的看看这也是不错的。glibc源码可以到点击打开链接下去下载,还有相关的文档在这里点击打开链接,有各种形式的,找合适自己的下载看吧。学计算机的看英文的别觉得憋屈。下面是一个bug测试程序的源码,你先看看口味是否合适。我是从stdio-common目录下找的,这个下面都是最常用的输入输出代码

#include 
   
   
    
    
#include 
    
    
     
     
#include 
     
     
      
      

int stdio_block_read = 1, stdio_block_write = 1;

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文通过Glibc的内存暴增问题,主要介绍了系统的内存管理问题,具体如下: 目录 1. 问题 2. 基础知识 2.1 X86平台Linux进程内存布局 2.1.1 32位模式下进程内存经典布局 2.1.2 32位模式下进程默认内存布局 2.1.3 64位模式下进程内存布局 2.2 操作系统内存分配的相关函数 2.2.1 Heap操作相关函数 2.2.2 Mmap映射区域操作相关函数 3. 概述 3.1 内存管理一般性描述 3.1.1 内存管理的方法 3.1.2 内存管理器的设计目标 3.1.3 常见C内存管理程序 3.2 Ptmalloc内存管理概述 3.2.1 简介 3.2.2 内存管理的设计假设 3.2.3 内存管理数据结构概述 3.2.4 内存分配概述 3.2.5 内存回收概述 3.2.6 配置选项概述 3.2.7 使用注意事项 4. 问题分析及解决 5. 源代码分析 5.1 边界标记法 5.2 分箱式内存管理 5.2.1 Small bins 5.2.2 Large bins 5.2.3 Unsorted bin 5.2.4 Fast bins 5.3 核心结构体分析 5.3.1 malloc_state 5.3.2 Malloc_par 5.3.3 分配区的初始化 5.4 配置选项 5.5 Ptmalloc的初始化 5.5.1 Ptmalloc未初始化时分配/释放内存 5.5.2 ptmalloc_init()函数 5.5.3 ptmalloc_lock_all(),ptmalloc_unlock_all(),ptmalloc_unlock_all2() 5.6 多分配区支持 5.6.1 Heap_info 5.6.2 获取分配区 5.6.3 Arena_get2() 5.6.4 _int_new_arena() 5.6.5 New_heap() 5.6.6 get_free_list()和reused_arena() 5.6.7 grow_heap(),shrink_heap(),delete_heap(),heap_trim() 5.7 内存分配malloc 5.7.1 public_mALLOc() 5.7.2 _int_malloc() 5.8 内存释放free 5.8.1 Public_fREe() 5.8.2 _int_free() 5.8.3 sYSTRIm()和munmap_chunk(

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值