以32位的CPU为例,其可以寻址空间大小为4Gb,如下图所示:

                           C++ 内存管理

       每个进程都独立拥有4G的逻辑空间,其中0-3G为用户态空间,3-4G为内核态空间,不同进程都拥有自己的逻辑地址,这些逻辑地址映射到不同的物理地址中。

用户态空间虚拟内存分为:代码段txt、数据段data、BSS段、堆区、文件映射区、栈区;

(1)代码段:包括只读存储区和文本区,只读存储区存储字符串常量,文本区存储程序的机器码;

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

(3) BSS:存储未初始化的全局变量和静态变量,以及所有被初始化为0的全局变量和静态变量;

(4)堆区:调用new/malloc函数时动态分配的内存,同时需要用delete/free去释放申请的内存;

(5)映射区:存储动态链接库以及调用mmap函数进行的文件映射;

(6)栈区:使用栈空间存储函数的返回地址、参数、局部变量、返回值。

相关文章:

  • 2021-07-04
  • 2021-04-19
  • 2021-09-19
猜你喜欢
  • 2021-12-08
  • 2021-05-09
  • 2021-07-12
  • 2021-12-02
相关资源
相似解决方案