内存管理
lq_fly_pig
这个作者很懒,什么都没留下…
展开
-
内存申请(malloc)和释放(free)之下篇
上篇介绍了内存malloc的sbrk和brk系统调用,以及mmap函数。本篇开始学习下内存的具体的malloc分配逻辑和free逻辑。(本篇幅的学习借助,华庭大神(阿里 庄明强) 总结的ptmalloc源码资料)1.简介linux系统glibc库是linux系统中最底层的c语言运行库,glibc库中分配内存和释放内存使用的函数是ptmalloc函数和free函数,分配器处在用户程序和内核之间,响应用户的内存分配请求。为了高效分配,分配器一般会预先分配一块大于用户请求的内存,并通过某些算法来管理.原创 2020-08-02 16:13:10 · 1044 阅读 · 0 评论 -
内存申请(malloc)和释放(free)之上篇
上一篇简单的介绍了进程内存寻址空间和内存分配,本篇主要详细介绍下内存的申请和释放1.brk和sbrkint brk(void * addr)void * sbrk(intptr_t increment)(1).brk()和sbrk()改变程序间断点的位置,程序间断点就是程序数据段的结尾(2).增加程序间断点,申请有效内存,传参为addr,数据段结尾设置为addr(3).sbrk()将程序数据空间增加increment字节(4).内存的申请和释放均可以使用brk或者sbrk来操作原创 2020-07-25 23:53:15 · 613 阅读 · 0 评论 -
Linux内存管理(一)
最近引擎版本上线,测试人员发现一个"奇怪问题",引擎实例不停的创建和销毁过程中,内存增长过快,看起来很像是内存泄漏,但是工具valgrind跑出来,也没发现代码的泄漏点,跑了很多次循环后,内存增加到一定后,就表现平稳,所以近期抽点时间,系统的学习下linux系统内存管理方式本次从以下四个问题出发:1.Linux虚拟地址如何分布? 我们常常说的 32位和64为有啥不同? 虚拟地址和物理地址区别?2. 如何分配内存,malloc ?3.malloc 是在虚拟地址 ? 物理地址分配内存,程序需要.原创 2020-07-18 23:39:15 · 284 阅读 · 0 评论