日期:2014-05-16  浏览次数:20921 次

请问有关linux内存分配的问题


函数calloc在开完堆空间后会自动初始为0,这比malloc安全方便,但是好像malloc在编程中出现的频率远高于calloc,
是这样吗?在内核里哪个用的多?

另外,看书上说,free完之后再free某块堆空间会出错,那到底会有什么样后果?
free不是把占用了的空间放回malloc池里吗?那再free一次会很严重么?不是再放回一遍么?反正已经在池里了,有区别吗?

谢谢


p。s。大家新年快乐·

------解决方案--------------------
不初始化速度肯定要快一点,不过使用不注意的话,容易出问题
看个人习惯,也有人习惯先malloc,然后memset初始化

free的问题,看一下free的源码就清楚了
------解决方案--------------------
malloc的性能比calloc高。
在内核中,哪个也不用。malloc和calloc是库函数提供的函数,内核不可能用到。

内存malloc和free可以简单看成是一个链表来理解。
malloc看成是把一个结点从链表中摘出来。
free看成是把一个结点挂到链表中。
------解决方案--------------------
在内核中使用kmalloc