Linux-C程序的存储空间布局】的更多相关文章

一个程序本质上都是由 BSS 段.data段.text段三个组成的.可以看到一个可执行程序在存储(没有调入内存)时分为代码段.数据区和未初始化数据区三部分. BSS段(未初始化数据区):在采用段式内存管理的架构中,BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段:在采用段式内存管理的架构中,数据段(data segment)通常是指用来存放程序中已初始化的…
从历史上讲,C程序一直由下面几部分组成: 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器.C编译器和shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外而修改其自身的指令. 初始化数据段.(所有带有初始值的全局变量)通常将此段称为数据段,它包含了程序中需明确地赋初值的变量.例如,C程序中出现在任何函数之外的声明: int maxcount = 99: 使此变量带有其初值存放在初始化数据段中. 非初始化数据段…
正文段 指的是由CPU执行的机器代码,通常,正文段是可以共享的,执行的程序在存储器中只有一个副本.通常也是只读的,防止程序本身被修改. 初始化数据段 数据段,被明确赋值的变量,比如全局变量 非初始化数据段 程序开始执行前,内核将此段中的数据初始化为0或者空指针,比如出现在函数外的C声明. 栈 自动变量以及每次函数调用是所需保存的信息都存放在此段中.每次调用函数时,其返回地址.调用者的环境信息都存放在新分配的栈中.因此一个函数调用实例的变量改变不会影响另一个函数调用实例的变量. 堆 动态存储的分配…
历史沿袭至今,C程序一直由下列几部分组成: 1. 正文段.这是由CPU执行的机器指令部分.通常,正文段是可共享的,所以即使是频繁执行的程序(编辑器,编译器,命令解释器)在存储器中也只需一个副本,另外正文段常常是只读的,以防止程序由于意外而修改 其指令. 2. 初始化数据段.通常将此段称为数据段,它包含了程序中需要明确地赋初值的变量.例如,C程序中任何函数之外的声明:int maxcount = 99; 3. 未初始化数据段.通常将此段称为bss段,这一名称来源于早期汇编程序一个操作符,意思是“由…
前言 C语言程序的执行必定需要耗费一定的资源,也就是说,程序在计算机内部的映像不可能就单单代码. 本文将讲解C语言程序在计算机内部的存在方式. 程序存储空间 1. 正文段:程序的机器指令部分 2. 初始化的数据:已经明确赋值的变量的值 3. 非初始化的数据:为赋值的变量的值 4. 栈:存放自动变量以及每次函数调用时所需保存的信息 5. 堆:用来实现动态分配内存( malloc new 等函数相关 )…
被隐藏了的过程 现如今在流行的集成开发环境下我们很少需要关注编译和链接的过程,而隐藏在程序运行期间的细节过程可不简单,即使使用命令行来编译一个源代码文件,简单的一句"gcc hello.c"命令就包含了非常复杂的过程. #include<stdio.h> int main() { printf("Hello word\n"); ; } 在Linux系统下使用gcc编译程序时只须简单的命令: $gcc hello.c $/a.out Hello word…
转载自:http://blog.csdn.net/embedded_hunter http://www.360doc.com/content/12/0405/00/1671317_200882538.shtml Linux应用程序在内存中的布局,由高地址到低地址依次为:栈.堆.BSS段.数据段.代码段. 代码段的起始地址固定为0x8048000,无论哪一个应用程序它的代码段起始地址一定是0x8048000,这里的地址虚拟地址,映射到不同的物理地址中去. 堆主要用来分配动态内存,操作系统提供了ma…
进程控制 1.进程概述现代操作系统的特点在于程序的并行执行.Linux是一个多用户多任务的操作系统.ps .pstree 查看进程进程除了进程id外还有一些其他标识信息,可以通过相应的函数获得.// 这些函数在unistd.h里声明. 2.Linux进程的结构Linux一个进程由3部分组成:代码段,数据段,堆栈段.代码段存放可执行代码数据段存放程序的全局变量,常量,静态变量堆栈段存放动态分配的内存变量,堆栈中的栈用于函数调用,存放着函数的参数,函数内部定义的局部变量. 3.Linux进程的状态 …
问题聚焦:     除了网络通信外,服务器程序通常还必须考虑许多其他细节问题,这些细节问题涉及面逛且零碎,而且基本上是模板式的,所以称之为服务器程序规范.     工欲善其事,必先利其器,这篇主要来探讨服务器程序的一些主要规范. 概览: Linux服务器程序一般以后台程序的形式运行,后台进程又称为守护进程. Linux服务器程序一般以某个专门的非root身份运行. Linux服务器程序通常是可配置的,命令行或者配置文件的形式. Linux服务器程序通常会在启动的时候生成一个PID文件,以记录该后…
什么样的云服务才适合作为 Linux 下的存储服务?兄弟连www.itxdl.cn来帮大家分析一下! 大量的免费空间.毕竟,个人用户无法支付每月的巨额款项. 原生的 Linux 客户端.以便你能够方便的在服务器之间同步文件,而不用做一些特殊的调整或者定时执行脚本. 其他桌面系统的客户端,比如 Windows 和 OS X.移动性是必要的,并且同步设备间的文件也很有必要. 基于 Android 和 iOS 的移动应用程序.在今天的现代世界里,你需要连接所有设备. 我不将自托管的云服务计算在内,比如…