堆栈、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的环境变量和命令行参数保
相关文档:
今天装了个RHCL5,不能加载网卡就更别说驱动了,用以下命令查看下网卡信息:
一、找硬件
[root@localhost
~]# kudzu --probe --class=network
class: NETWORK
bus: PCI
detached: 0
device: eth0
desc: "Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet
"
vendorId: 10ec
dev ......
把自己常用的一些linux命令记录下来
1. 查看当前用户和组
less /etc/passwd
less /etc/group 或者 groups 查看组
有人说用上面那两个命令得到的结果不完全,一些特殊方式建立的就看不到了,可改用
getent passwd
getent group
2. 改变文件的所有者和所属组
chown baoniu ......
前几天更新ubuntu的时候,突然失败,仔细一看,是卸载老版本的gzip时候出了问题。错误信息:
install-info: No dir file specified; try --help for more information.
试了多个常用的手动卸载方法都没法搞定,于是求助google,很快找到答案。是GNU版的install-info代替了debian版的install-info造成的问题,覆盖回来就OK ......
1.
printf("%.9lf\n",sum);
//输出小数点后9位不省去末尾多余的0
2.
printf("%.10g\n",sum);
//输出小数点后9位不省去末尾多余的0
3.
#include<iomanip>
cout<<setprecision(10)<<sum<<endl;
//输出小数点后9位省去末尾多余的0
4.
#include<iomanip>
cout.pre ......
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num;
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
P1=0xFF;
while(1);
}
void T0_time() interrupt 1
{
  ......