码迷,mamicode.com
首页 > 其他好文 > 详细

栈分配的速度快于堆

时间:2015-07-06 19:19:42      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

就普通的操作而已分配栈空间仅仅是一个指针操作, 在汇编中的操作如下,这样就分配了6个字节的空间

1
sub esp, 0x06

利用内存池来申请堆空间在性能上才有可能在性能赶上栈。 而且申请堆的空间很可能在cache上。

对内存分配需要根据你的申请空间大小,内存碎片情况等的影响,性能上比栈差一些。

 

栈如何获得内存?在函数中定义一个大的数组是没有大的内存分配开销的,只有在使用它的时候需要做地址映射。

malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。就是这样!

栈分配的速度快于堆

标签:

原文地址:http://www.cnblogs.com/qiangxia/p/4624967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!