堆栈、linux c程序存储空间布局的总结
栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.
堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.
全局,静态和常量是分配在数据区中的。数据区包括bss和初始化区。
堆向高内存地址生长
栈向低内存地址生长
堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk
CODE:
进程在内存中的影像.
我们假设现在有一个程序, 它的函数调用顺序如下.
main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...)
即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3
当程序被操作系统调入内存运行, 其相对应的进程在内存中的影像如下图所示.
(内存高址)
+--------------------------------------+
| ...... | ... 省略了一些我们不需要关心的区
+--------------------------------------+
| env strings (环境变量字串) | \
+--------------------------------------+ \
| argv strings (命令行字串) | \
+--------------------------------------+ \
| env pointers (环境变量指针) | SHELL的环境变量和命令行参数保
相关文档:
1,打开串口
/**打开串口,dev 串口设备名, mode 打开方式,**/
int opendev(char *dev,mode_t mode)
{
int fd;
fd = ......
前几天更新ubuntu的时候,突然失败,仔细一看,是卸载老版本的gzip时候出了问题。错误信息:
install-info: No dir file specified; try --help for more information.
试了多个常用的手动卸载方法都没法搞定,于是求助google,很快找到答案。是GNU版的install-info代替了debian版的install-info造成的问题,覆盖回来就OK ......
Gentoo Linux ALSA指南
1.
简介
什么是ALSA?
ALSA是Advanced Linux Sound Architecture,高级Linux声音架构
的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface
,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列 ......
第二章 变量和运算符
本地变量:尽可以被本进程使用
1 赋值
varname=varvalue
varname="varvalue"
可以通过set命令查看本地变量
readonly varname//设置为只读
readonly varnmae=varvalue//设置并初始化
readonly命令本身可以显示所有只读变量
环境变量:可以被子进程使用
系统初始化的环境变量 $HOME/.bash_profi ......
Linux根文件系统结构再认识
刘建文(http://blog.csdn.net/keminlau )
INTRO
尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的【逻辑主体】(为了实现不同的逻辑功能)组合在一起的,参见下图。这也解释了为什么有些节点(如/var)可以挂接到不同磁盘分区上。 ......