C++程序内存分配与布局机制详解.pdfVIP

  • 0
  • 0
  • 约2.72千字
  • 约 4页
  • 2026-10-21 发布于北京
  • 举报

程序内存分配方式

程序内存布局

现在的应用程序都运行在一个虚拟内存空间里,以32位系统为例,其寻址空间为

4G,大部分的操作系统都将4G内存空间的一部分挪给内核调用,应用程序无法直接

这一段内存,这一部分内核地址成为内核态空间,Linux默认将高地址的1G空

间分配给内核,用户使用剩下的3G空间成为用户态空间,用户态空间一般有如下默

认区域:

1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。

其操作方式类似于数据结构中的栈。

2.堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS

回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3.全局/静态区(static):全局变量态变量的是放在一块的,在程序编译

时分配。

4.文字常量区:存放常量字符串。

5.程序代码区:存放函数体(类的成员函数、全局函数)的二进制代码

虚拟内存空间示意图如下:

当执行一个非内置的可执行程序时,加载器会将可执行目标文件中的代码和数据从

磁盘拷贝到内存中。每个Linux程序都会有一个运行时器映像,如上图所示。在

可执行文件中段头部表的指导下,加载器将可执行文件的相关内容拷贝到代码和数

据段。

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档