linux下C可执行文件在内存中的分配
来源:互联网 发布:农村淘宝分布图 编辑:程序博客网 时间:2024/05/29 13:34
C源文件各部分内容与可执行文件的映射关系:
C可执行文件与内存的映射关系:
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
代码段(文本段):代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。
考虑共享库时的进程内存布局
- linux下C可执行文件在内存中的分配
- 可执行文件中的段在内存中的布局
- 代码在内存中的分配
- 对象在内存中的分配
- 程序在内存中的分配
- 进程在内存中的分配
- 类在内存中的分配
- 类在内存中的分配
- c语言数组变量在内存中的连续分配情况
- C语言之数据在内存中的分配区域
- 虚拟函数在内存中的分配问题
- java中变量在内存中的分配
- c++类实例在内存中的分配
- 类在内存中的分配问题
- 类在内存中的分配问题
- 类在内存中的分配问题
- c++类实例在内存中的分配
- 指针在内存分配中的简单应用
- 合理的配置我们所用的IDE
- 集合框架Collection&Map
- android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
- 进程3
- C# 多页打印简单实现
- linux下C可执行文件在内存中的分配
- linux异步通知与异步I/O笔记
- 孙鑫VC学习笔记:第十讲画图 改变对话框及控件的文字/背景颜色
- 引用和引用参数
- maven中的 dependencies 和 dependencyManagement 的区别(六)
- Cortex-M3 (NXP LPC1788)之IIS应用--UDA1380进行音频数据播放
- 设置、读取联络人头像 ---- save UIImage to ABAddressBook
- C++ inline 函数
- 20120725-51单片机IO口模拟串口通讯2-计数法