c 语言变量的存储布局 笔记
来源:互联网 发布:知乎怎么修改关注话题 编辑:程序博客网 时间:2024/05/22 22:56
1、源代码 main.c
#include <stdio.h>const int A = 10; // GLOBAL的符号 //const表示只读,不可修改, 分配在.rodata //程序加载运行时,.rodata 段和 .text 段通常合并到一个Segment中int a = 20; // GLOBAL符号 // 分配在.data 字段static int b = 30; // LOCAL符号 // 分配在 .data 字段 //只能在一个目标文件中定义和使用int c; // GLOBAL 符号 // 分配在.bss段,紧挨着.data 段, // .data 和 .bss 在加载时合并到一个Segment中,这个Segment 可读可写 // 不同之处.bss 在文件中不占存储空间,在加载时填充为0,初值为0int main(void){ static int a = 40; // LOCAL 符号 // 不像其他局部变量在调用函数时分配,在函数返回时释放,而是像全局变量一样静态分配,作用域只在函数中起作用 // 分配在 .data 字段 char b[] = "Hello world"; // 保存在栈上 // 虽然栈是从高地址向低地址增长的,但是数组总是从低地址向高地址排列的 register int c = 50; // register关键字指示编译器尽可能分配一个寄存器来存储这个变量 printf("Hello world %d\n", c); // 分配在.rodata // 字符串字面值是只读的,相当于在全局作用域定义了一个const数组 return 0;}
2、分析使用到的命令
(1)使用 gcc main.c -g 生成可执行文件
(2)使用 readelf -a a.out 命令查看符号表
(3)使用 hexdump -C a.out 命令查看段内容
(4)使用 objdump -dS a.out 反汇编代码
0 0
- c 语言变量的存储布局 笔记
- C语言--变量的存储
- C语言温习笔记之变量的存储类别
- C语言笔记——变量的存储类型
- C语言变量存储区域 进程内存布局
- C语言的动态存储变量与静态存储变量
- c语言变量存储
- c语言变量存储
- C 语言变量存储
- 变量的存储布局
- 变量的存储布局
- 变量的存储布局
- 变量的存储布局
- C语言变量的存储类别
- c语言变量的存储类型
- C语言的变量存储分配
- C语言变量的存储类别
- C语言中的变量的存储类型
- js学习笔记:语句和函数
- 带你解析Dagger2
- Javascript闭包——懂不懂由你,反正我是懂了
- 放大器在Javascript中的实现
- MYSQL外键(Foreign Key)的使用
- c 语言变量的存储布局 笔记
- 栈和队列(一)
- 特殊权限
- C语言学习:平方-->乘方(m的n方)
- leetcode之237. Delete Node in a Linked List(C++解法)
- 面向对象基础==方法重载及继承09/11
- Ext js xtype : "textfield"隐藏方法
- hdu 5873 Football Games 模拟、兰道定理Landau's Theorem
- 子进程自父进程继承什么或未继承什么