• 程序的内存结构


      以32位CPU为例,可以寻址4G的空间,每个进程都有自己独立的4G逻辑地址内核空间占1G(高地址),用户空间占3G(低地址),不同进程相同的逻辑地址(CPU生成的地址)映射到不同的物理地址(物理内存的地址)。

        程序在存储(还未调入到物理内存)时,由代码段,已初始化数据段和未初始化数据段三部分组成。静态区域:代码段(Text segment),已初始化数据段(Data segment),未初始化数据段(BSS segment);动态区域:堆(Heap),映射区(Memory Mapping segment),栈(Stack);

      代码段:只读存储区-存储字符串常量;文本区-存储程序的机器代码;

      已初始化数据段:存储程序中已经初始化的全局变量和静态变量;

      未初始化数据段:存储程序中未初始化的全局变量和静态变量,以及初始化为0的全局变量和静态变量;未初始化的全局变量和静态变量编译器会将其初始化为0;

      :程序未调用new/malloc之前不存在堆,调用new/malloc时才分配堆;程序运行过程中堆可以动态增长(从低地址向高地址增长);

      映射区:存储动态链接库等文件映射,申请大内存时分配在映射区;

      :存储函数的返回值、返回地址、参数和局部变量等,从高地址向低地址增长;创建进程时,默认的栈空间的最大值为1M。

  • 相关阅读:
    livereload
    XAMPP Apache 配置多端口和多域名方法
    移动端touch事件实现页面弹动--小插件
    QRCode生成二维码,jq QRCode生成二维码,QRCode生成电子名片
    下拉刷新
    js 中获取 日期
    wcf 的 知识点
    iis 发布失败原因总结
    list 用法的随手记
    字符编码的 文章推荐
  • 原文地址:https://www.cnblogs.com/yongjin-hou/p/14372836.html
Copyright © 2020-2023  润新知