关注
关于3.1 const常量的存放位置,应该存在在.rodata只读数据段,见如下实验:
ubuntu 20.04 gcc9.4.0 下面程序:
#include <stdio.h>
(30951)#define HELLO "world\n"
const int i = 10;
int const j = 20;
char *p = "hello ubuntu\n";
int main(void){
char c_val = 'a';
printf("hello%s",HELLO);
printf("%s",p);
printf("c_val = %c\n",c_val);
return 0;
}使用gcc编译之后,使用objdump -j .rodata -s a.out之后得到
a.out: file format elf64-x86-64
Contents of section .rodata:
2000 01000200 0a000000 14000000 68656c6c ............hell
2010 6f207562 756e7475 0a00776f 726c640a o ubuntu..world.
2020 0068656c 6c6f2573 00257300 635f7661 .hello%s.%s.c_va
2030 6c203d20 25630a00 l = %c..然后通过readelf -s a.out和readelf -S a.out可以看到变量i和j通过const修饰后也放在了.rodata段。
[18] .rodata PROGBITS 0000000000002000 00002000
0000000000000038 0000000000000000 A 0 0 4
[25] .data PROGBITS 0000000000004000 00003000
0000000000000018 0000000000000000 WA 0 0 8
54: 0000000000002008 4 OBJECT GLOBAL DEFAULT 18 j
67: 0000000000002004 4 OBJECT GLOBAL DEFAULT 18 i
56: 0000000000004010 8 OBJECT GLOBAL DEFAULT 25 p
可以看到字符串常量,const型常量存放在只读数据区,但是指针p是在.data段的
点赞
相关推荐
pluck*0916:刚开始都会这样滴
点赞 评论 收藏
分享
05-11 12:05
中国矿业大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
21162次浏览 508人参与
# 秋招什么时候开投比较合适? #
9876次浏览 196人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
23049次浏览 192人参与
# 实习,不懂就问 #
32749次浏览 556人参与
# 软开人,秋招你打算投哪些公司呢 #
101363次浏览 954人参与
# 如何准备秋招 #
13286次浏览 246人参与
# 发工资后,你做的第一件事是什么 #
66583次浏览 221人参与
# 运营人求职交流聚集地 #
141372次浏览 989人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28344次浏览 456人参与
# 每个月的工资都是怎么分配的? #
16482次浏览 346人参与
# 不考虑转正,实习多久合适 #
30020次浏览 130人参与
# 你觉得现在还能进互联网吗? #
5184次浏览 109人参与
# 预测一下26届秋招形势 #
28195次浏览 258人参与
# 你们公司几号发工资 #
19239次浏览 129人参与
# 大疆今年的机械笔试难吗? #
41639次浏览 456人参与
# 25届如何提前做秋招准备? #
171883次浏览 2482人参与
# 晒一晒你收到的礼盒 #
70390次浏览 403人参与
# 硬件应届生薪资是否普遍偏低? #
72817次浏览 511人参与
# 打工人的精神状态 #
54647次浏览 996人参与
# 高考出分的那一天,我__ #
17932次浏览 272人参与
# 来聊聊你认为的薪资天花板是哪家? #
31078次浏览 175人参与