当前位置: 技术问答>linux和unix
请问有关linux内存分配的问题
来源: 互联网 发布时间:2017-01-28
本文导语: 函数calloc在开完堆空间后会自动初始为0,这比malloc安全方便,但是好像malloc在编程中出现的频率远高于calloc, 是这样吗?在内核里哪个用的多? 另外,看书上说,free完之后再free某块堆空间会出错,那到底会有什么样后果...
函数calloc在开完堆空间后会自动初始为0,这比malloc安全方便,但是好像malloc在编程中出现的频率远高于calloc,
是这样吗?在内核里哪个用的多?
另外,看书上说,free完之后再free某块堆空间会出错,那到底会有什么样后果?
free不是把占用了的空间放回malloc池里吗?那再free一次会很严重么?不是再放回一遍么?反正已经在池里了,有区别吗?
谢谢
p。s。大家新年快乐·
|
malloc的性能比calloc高。
在内核中,哪个也不用。malloc和calloc是库函数提供的函数,内核不可能用到。
内存malloc和free可以简单看成是一个链表来理解。
malloc看成是把一个结点从链表中摘出来。
free看成是把一个结点挂到链表中。
在内核中,哪个也不用。malloc和calloc是库函数提供的函数,内核不可能用到。
内存malloc和free可以简单看成是一个链表来理解。
malloc看成是把一个结点从链表中摘出来。
free看成是把一个结点挂到链表中。
|
不初始化速度肯定要快一点,不过使用不注意的话,容易出问题
看个人习惯,也有人习惯先malloc,然后memset初始化
free的问题,看一下free的源码就清楚了
看个人习惯,也有人习惯先malloc,然后memset初始化
free的问题,看一下free的源码就清楚了
|
在内核中使用kmalloc