BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #28048同步于 2009/9/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

提问:malloc分配内存相关。

camelBUPT
2009/9/3镜像同步8 回复
话说Malloc分配内存时,实际划分的内存比申请大小要大,多出的这部分内存用来存放此块内存段的一些管理信息。。。以struct结构形式存放。这块内存位于malloc返回指针指向内存之前。。。 请问这个struct结构体的名称是什么???
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
nickluchen机器人#1 · 2009/9/3
这个只能看源代码了吧? CSAPP上讲的隐式空闲链表和双向空闲链表两种方案中,没有用Struct结构
camelBUPT机器人#2 · 2009/9/3
沉了。。自己顶一下。 在malloc.h里面有一个struct mallinfo,看看里面的成员不像是存放管理信息的。。。
flyingkisser机器人#3 · 2009/9/3
win32的话,都是从堆里分配的。 相关管理结构和堆管理相关。这一块比较复杂。想搞清楚,建议自己逆向一下。 xpsp2,sp3,vista都不一样。 【 在 camelBUPT (迷茫的人) 的大作中提到: 】 : 沉了。。自己顶一下。 : 在malloc.h里面有一个struct mallinfo,看看里面的成员不像是存放管理信息的。。。
jmpesp机器人#4 · 2009/9/4
【 在 flyingkisser 的大作中提到: 】 : win32的话,都是从堆里分配的。 : 相关管理结构和堆管理相关。这一块比较复杂。想搞清楚,建议自己逆向一下。 : xpsp2,sp3,vista都不一样。 你说的这个是指windows内部堆Heap的分配算法,这个算法windows是不公开的,也就是说逆向是非常困难的,几乎不可能,到目前为止,逆向工程界的大牛们也对windows内部堆分配算法一直半解,所以,我们去逆向那是不现实的。。。 再说这个malloc,这个malloc的实现跟操作系统如windows的对分配算法那是不一样的。这个malloc是运行库函数,它本身是用windows 堆管理API一下子申请一个大的内存块,类似于自己先申请一个内存池,然后根据自己的算法对这个我们一下子申请的大内存块就进行自主的分配。至于是什么分配算法,这个malloc的源代码网上是有公开的,可以搜下
flyingkisser机器人#5 · 2009/9/4
1.我比较完整的逆向过heap算法,05年的时候吧。 在这以前,也有不少人做过这事了。 这个事不难,就是花点时间的事。 2.malloc的实现,你找找我曾经发过的文章吧,在软件版或信息安全版应该能找到。 这里简单说一句,就是直接从堆里分配的。 【 在 jmpesp (我是垃圾) 的大作中提到: 】 : 你说的这个是指windows内部堆Heap的分配算法,这个算法windows是不公开的,也就是说逆向是非常困难的,几乎不可能,到目前为止,逆向工程界的大牛们也对windows内部堆分配算法一直半解,所以,我们去逆向那是不现实的。。。 : 再说这个malloc,这个malloc的实现跟操作系统如windows的对分配算法那是不一样的。这个malloc是运行库函数,它本身是用windows 堆管理API一下子申请一个大的内存块,类似于自己先申请一个内存池,然后根据自己的算法对这个我们一下子申请的大内存块就进行自主的分配。至
huitailang机器人#6 · 2009/9/4
恩,看过linux内存分配, 在Linux中这个结构好像是mem_control_block.(记不清楚) ______ _________________________________ head |<-malloc分配的指针起始位置 ______|__________________________________ free的时候只需要把指针前移sizeof(mem_control_block)即可. 【 在 camelBUPT (迷茫的人) 的大作中提到: 】 : 标 题: 提问:malloc分配内存相关。 : 发信站: 北邮人论坛 (Thu Sep 3 15:26:54 2009), 站内 : : 话说Malloc分配内存时,实际划分的内存比申请大小要大,多出的这部分内存用来存放此块内存段的一些管理信息。。。以struct结构形式存放。这块内存位于malloc返回指针指向内存之前。。。 : : 请问这个struct结构体的名称是什么??? : -- : 泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖;与其誉尧而非桀也,不如两忘而化其道; : : ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 60.247.97.*]
jmpesp机器人#7 · 2009/9/5
【 在 flyingkisser 的大作中提到: 】 : 1.我比较完整的逆向过heap算法,05年的时候吧。 : 在这以前,也有不少人做过这事了。 : 这个事不难,就是花点时间的事。 : ................... 嗯,既然你逆向出来了,那我也回寝室好好研究吧,ok,od与ida是该好好用用啦。
jokerlee机器人#8 · 2009/9/5
这个不归malloc管,malloc只会从libc的一个全局指针分配内存并移动指针 【 在 nickluchen 的大作中提到: 】 : 这个只能看源代码了吧? : CSAPP上讲的隐式空闲链表和双向空闲链表两种方案中,没有用Struct结构