• 内存的堆栈分析


    一般说到内存指的是计算机的随机存储器(RAM),程序都是在这里面运行。
    计算机内存的大致划分如下:
    1:内存地址由上倒下依次增加

    2:内存由上倒下依次分为以下几块:

    内核虚拟内存:用户代码不可见的内存,地址空间顶部的区域,是为内核保留的。

    : 维护虚拟地址的空间顶部是用户栈,编译器用它来实现函数调用。
      每次调用一个函数时栈会增长(方法中涉及大量的几部变量),
      从函数返回时栈会收缩。
      存储运行时的局部变量及const局部变量
      栈是连续的lifo(后进先出)的存取方式,地址从上到下逐渐增加。

    共享库:大约在地址空间的中间部分,是一块用来存放标准库和数学库这样的共享库代码和数据的区域。
        如:printf函数等...

    :运行时有malloc创建的运行时的堆。
      存放程序员申请的内存空间,如 new Array()
      堆是树状结构的无序的存储数据的方式。

    程序代码和数据区:包括读/写数据和只读的代码和数据,对所有的进程来说,代码是从同一固定地址开始,
              紧接着的是和C全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的
              内容初始化的。
            可读写区用于存储全局变量和静态变量 的数据
            只读区 存储代码
            可读写区用于存储用户的数据:地址连续存储

  • 相关阅读:
    003_当表中字段不能为空,但却没有赋值时?
    019_SSM——mybatis的#{id}可以根据是对象参数调用setId()的原码?
    002_com.wkcto自动添加错误
    018_SSM——Spring框架的byName与ByType实现自动注入的原码是什么呢?
    as3 文档类引用
    as3 连接mysql
    as2 针对加载进来的swf操作
    as3 arguments.callee与... (rest)
    as3 string split方法一些注意
    as3 Function 中的call与apply方法
  • 原文地址:https://www.cnblogs.com/show58/p/12396217.html
Copyright © 2020-2023  润新知