linux中频繁分配malloc导致的内存碎片是指什么?

u010152920 2015-05-25 06:19:26
我们都知道内存碎片包括:内部碎片和外部碎片

但是以上的概念都是针对没有虚拟内存的条件下说的,直接对映我们的物理内存


但是linux系统中,我们都是通过虚拟内存地址和物理地址通过分页机制完成对映的


那么频繁使用malloc(),为什么会导致内存碎片??这里的内存碎片是指由于虚拟的线性地址空间不够的内存碎片,还是由于物理内存不够的内存碎片??


1、如果内存碎片定义为,线性地址空间不够导致。那么malloc频繁分配会导致内存碎片就好理解了


2、如果内存碎片定义为物理内存不够,那么为什么频繁分配malloc会导致内存碎片呢??


另外我们的malloc函数,如果是优化过的linux中的pmalloc()函数,那么本身就优化了,那么此时频繁使用,会不会产生内存碎片?如果产生,是什么原因导致的??

最后网上经常说要使用自己写的内存池,那么很多malloc的函数库,本身就使用了内存池,比如pmalloc,为什么我们还要去重复写内存池??
...全文
773 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
FightForProgrammer 2015-05-25
  • 打赏
  • 举报
回复
为什么自己写,是因为软件使用内存都是有具体应用的。有的需要自由链表来维护,免得经常需要去malloc。有的偶尔需要,就malloc一块打得给他用。 具体很多知识都是细节的,一时半会说不清楚。需要自己多多看书多多积累就能明白其中奥义

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧