好友
阅读权限10
听众
最后登录1970-1-1
|
补充一下网络知识,就去看了看到linux programming interface 描述临时文件.
下边是笔记内容:
1. ls -la /dev/fd/
下边全是软连接,在这里都是软连接。
2. linux的二进制执行文件格式有COFF和ELF。coff比较复杂,之后在看。先mark
3. size + a.out 检查程序的各个区段的大小信息。
#size a.out
text data bss dec hex filename
1237 504 16 1757 6dd a.out
bss-未初始化段。全局变量,静态变量。
data段,初始化数据。全局变量,静态变量
dec
text段。执行的ML语句
1、文本段:包含程序的指令,它在程序的执行过程中一般不会改变。
2、数据段:包含了经过初始化的全局变量和静态变量,以及他们的值。
3、BSS段:包含未经初始化的全局变量和静态变量。
4、堆栈段:包含了函数内部声明的局部变量。
论1:未初始化的全局变量保存在BSS段
论2:经过初始化的全局变量保存在数据段中
论3:未初始化的静态变量保存在BSS段中
论4:经过初始化的静态变量保存在数据段中
论5:函数内部声明的局部变量保存在堆栈段(text
论6:const修饰的全局变量保存在文本段
结论7:const修饰的局部变量保存在堆栈段
论8:字符串常量保存在文本段
结论
1、经过初始化的全局变量和静态变量保存在数据段中。
2、未经初始化的全局变量和静态变量保存在BSS段。
3、函数内部声明的局部变量保存在堆栈段中。
4、const修饰的全局变量保存在文本段中,const修饰的局部变量保存在堆栈段中。
5、字符串常量保存在文本段中。
四、示例查看进程各个段中的数据
栈:栈段是一个容器,栈段中有多个栈帧。一个进程只有一个栈段。
每个函数都有自己的栈帧,在函数结束的时候,函数的栈帧释放。
函数中变量的空间分配在栈帧上的,变量的空间释放了。变量的生命结束了。
什么样的变量的空间分配在栈帧上?
函数中的自动局部变量和函数的形参的空间分配在栈帧中。
生命周期:函数
堆:堆的生命周期 要么程序员手动释放堆空间。否则,进程结束的时候。
BSS:
数据段:
静态的局部变量和全局变量的空间分配在数据段。
生命周期:进程
但两者的作用域不同。:局部变量:函数内 全局变量:整个文件
代码段:
局部变量int i; 和 static int i; 生命周期不同,作用域一样
全局变量int i; 和 static int i; 生命周期相同,作用域不同
lzh@lzh:~/lzh/UC$ cat memory.c
#include <stdio.h>
int a;
int a1 = 10;
static int a2 = 20;
static int a3;
const int a4 = 10;
const int a5;
void foo(int i, const int i1)
{
printf("函数形参 &i=%p\n", &i);
printf("函数(常)形参 &i1=%p\n", &i1);
}
int main(void)
{
int b;
int b1=20;
static int b2=30;
static int b3;
const int b4 = 20;
const int b5;
printf("pid=%d\n", getpid());
printf("未初始化全局变量 &a=%p\n", &a);
printf("全局变量 &a1=%p\n", &a1);
printf("全局静态变量 &a2=%p\n", &a2);
printf("未初始化全局静态变量 &a3=%p\n", &a3);
printf("常全局变量 &a4=%p\n", &a4);
printf("未初始化局部变量 &b=%p\n", &b);
printf("局部变量 &b1=%p\n", &b1);
printf("局部静态变量 &b2=%p\n", &b2);
printf("未初始化局部静态变量 &b3=%p\n", &b3);
printf("常局部变量 &b4=%p\n", &b4);
foo(f, a1);
int *g = (int *)malloc(4);
printf("动态分配&g=%p\n", &g);
getchar();
return 1;
}
ref:http://blog.sina.com.cn/s/blog_3d5517850101gngl.html
http://blog.sina.com.cn/s/blog_770d18dd0102xat0.html
4.
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|