一直对c里的malloc()的内存存在的位置搞不清楚,最近发现了一些资料,才逐渐明白:
闲言不表,关于用brk()实现的,如下图:
Reference:
- 对上图的详细的解释
- 各种malloc的实现
- http://www.ibm.com/developerworks/linux/library/l-memory/ 关于heap是怎么来的,你要好好看看这个呀,以及怎么用brk(0)
关于使用mmap()来实现malloc()的参考:
- http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
顺便发现这个网站还不错,写了很多技术类文章:
我们有这两句:
Since 2.3 release (glibc) uses a modified , based on "'s
Malloc" ().
Memory on the is allocated as
"chunks",
知道gnu的实现是用heap实现的。
所以在hack postgresql的代码的时候,palloc实际上还是在heap上操作的。所以在momjian的inside postgresql shared memory 里面的第11页的shared memory creation中还是有heap的增长箭头的。
阅读(2078) | 评论(0) | 转发(0) |