易截截图软件、单文件、免安装、纯绿色、仅160KB

C 程序的存储空间布局

C 程序有下面几个部分组成:
  1  正文段:这是CPU 执行的机器指令的部分。通常正文段是可以共享的,所以即使是频繁执行的程序(如:文本编辑器)在存储器上也只有一个副本。另外正文段常常是只读的,以防止程序因为意外而修改其自身的指令。
  2  初始化数据段:通常将此段称为数据段,它包含了程序中需明确赋值的变量。例如:在任何函数之外的声明:int maxcount = 99; 是变量代有初始值存放在初始化数据段中。
  3  非初始化数据段:通常将此段称为bss段(block started by symbol)。在程序开始执行之前,内核将此段中的数据初始化为0或者空指针。出现在任何函数外的C 声明: long sum[100]; 使此变量存放在非初始化数据段中。
  4  栈:自动变量以及每次函数调用时所保存的信息都存放在此段中。然后,最近调用的函数在栈上为其自动和临时变量分配存储空间。通过以这种方式使用栈,可以递归调用C 函数。递归函数每次调用自身时,就是用一个新的栈针,因此一个函数调用实例中的变量不会影响另一个函数调用实例的变量。
  5  堆:通常在堆中进行动态存储分配。由于历史上形成的惯例,堆位于非初始化数据段和栈之间。
当然,程序还有别的类型的段,例如,包含符号表的段、包含调试信息的段以及包含动态共享库链接表的段等等。这些段并不装载到进程执行的程序影像中。
来自:UNIX 环境高级编程 第2版


相关文档:

LINUX下I2C总线适配器初始化调用链

以 i2c-mpc.c 驱动模块为例
fsl_i2c_init -> of_register_platform_driver -> of_register_driver -> driver_register -> bus_add_driver -> driver_attach
-> bus_for_each_dev -> __driver_attach -> driver_probe_device -> really_probe -> drv->probe(dev); ......

C/C++

9.2  共用体
C语言除了提供结构体这种可包含多种类型数据的构造类型外,还提供了一种从形式上看和结构体堪称“孪生兄弟”的构造类型——共用体(union)。
本节从共用体的概念入手,从共用体的概念、与结构体的异同、使用等方面进行详细的介绍。
9.2.1  什么是共用体
现实生活中,某些事 ......

C图形编程学习


一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode( ......

c陷阱与缺陷阅读笔记

【1】 “ = ”的优先级低于  “ || ” 且 “ = ” 为右结合性,注意一下代码为死循环:while(c=' '||c=='\t'||c=='\n')

程序本意是跳过空格,制表符,换行符,但由于不小心将c=='  '写成了c= '  '导致程序进入死循环
【2】a=-1 在很老的C版本里理解为 a =-  1
【3 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号