zoukankan      html  css  js  c++  java
  • 栈分配的速度快于堆

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

    1
    sub esp, 0x06

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

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

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

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

  • 相关阅读:
    JUC学习
    java反射学习
    JSON入门学习
    redis
    NoSQ学习
    手写Lockl锁
    MapReduce过程
    scala学习
    idea jetty 配置
    java 基础--理论知识
  • 原文地址:https://www.cnblogs.com/qiangxia/p/4624967.html
Copyright © 2011-2022 走看看