zoukankan      html  css  js  c++  java
  • 程序的内存结构

      以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。

  • 相关阅读:
    SpringBoot系列之切换log4j日志框架
    SpringBoot系列之日志框架使用教程
    SpringBoot系列之集成logback实现日志打印(篇二)
    源码学习系列之SpringBoot自动配置(篇二)
    SpringBoot系列之@Conditional注解用法简介
    7.Maven命令
    6.Maven构建过程的各个环节
    5.Maven坐标
    4.用IntelliJ IDEA 创建Maven Web
    3.用IntelliJ IDEA 创建Maven
  • 原文地址:https://www.cnblogs.com/yongjin-hou/p/14372836.html
Copyright © 2011-2022 走看看