c程序在虚拟内存中的地址顺序
来源:互联网 发布:网络剧怎么找发行渠道 编辑:程序博客网 时间:2024/06/05 19:27
c程序在虚拟内存中的地址从低地址到高地址的顺序依次是:
text段(代码区)、.rodata段(常量区)、.data段(已初始化的全局变量区)、.bss段(未初始化的全局变量区)、堆、动态库映射区、栈、内核区(用户态代码不可访问)
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
数据段 :数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段: 代码段(code segment/text segment)通常是指用来存放 程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读 , 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量 ,例如字符串常量等。程序段为程序代码在内存中的映射.一个程序可以在内存中多有个副本.
堆(heap) :堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc/free等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张)/释放的内存从堆中被剔除(堆被缩减)
栈(stack) :栈又称堆栈, 存放程序的局部变量(但不包括static声明的变量, static 意味着 在数据段中存放变量)。除此以外,在函数被调用时,栈用来传递参数和返回值。由于栈的后进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
- c程序在虚拟内存中的地址顺序
- 虚拟内存到底是什么?为什么我们在C语言中看到的地址是假的?
- 虚拟内存到底是什么?为什么我们在C语言中看到的地址是假的?
- 进程虚拟地址空间中的虚拟内存区域(vma)---可执行程序与虚拟地址空间的映射关系
- tlphelp32.h在程序中的顺序
- java程序在JVM中的运行顺序:
- c中变量在栈中的地址
- 【C】getchar()在C程序中的妙用!
- 关于虚拟内存地址和相对虚拟内存地址
- 结构在C程序中的应用
- C程序在Linux中的编译问题
- c语言在程序中的运用
- getchar()在C程序中的妙用!
- getchar()在C程序中的妙用!
- getchar()在C程序中的妙用!
- 虚拟内存地址概念
- 虚拟地址与虚拟内存
- 虚拟内存与地址转换
- OBIEE编辑报表比率向下取整问题
- github命令大全
- Json格式与java对象之间的转换
- 指针、数组、指针算术
- <input type='file'>选择文件后自动上传文件
- c程序在虚拟内存中的地址顺序
- centos6.5初步安装tomcat8步骤
- Ubuntu 12.04版本下安装交叉编译器arm-linux-gcc4.3.2
- Cocos2d在VC2013上初次运行错误:GLFWError #65537 Happen,The GLFW library is not initialized
- 安装samba时,出现perl(Convert::ASN1) is needed by
- 如何维护Http请求的状态
- RQNOJ 123 多人背包(背包k优解)
- KDD Cup 2011:音乐推荐
- Struts2的常量配置