当前位置:首页 > 数码 >

常量字符串为什么不能修改(字符型常量和字符串常量如何使用)

来源:原点资讯(m.360kss.com)时间:2024-04-26 12:23:53作者:YD166手机阅读>>


常量字符串编译后为什么要放在这个区域?这就是一种规则。Linux要跑程序,就需要把可执行文件加载到内存中,所以制定了ELF文件结构,告诉编译器,Linux平台的程序随便你怎么编译,但是你生成的文件得符合ELF文件结构我才能运行

常量字符串你编译器编译时要放到.rodata段中,我Linux加载程序的时候才会放到内存只读区域中,这样才能实现我们所学的:常量字符串不可以修改

如果你想详细了解.rodata,或者你想全面了解Linux平台的可执行文件ELF文件结构,这时候你就可以借助ChatGPT去学习研究了!

常量字符串在内存中的样子

再来看看常量字符串在内存中的样子,如图

常量字符串为什么不能修改,字符型常量和字符串常量如何使用(9)


有木有发现一个惊天大秘密?其实常量字符串跟代码,在内存中,即进程内存空间中,是在同一个区域!给你看一个更形象的图

常量字符串为什么不能修改,字符型常量和字符串常量如何使用(10)


文章中的很多演示效果,并不是Linux提供的,是我写代码实现的。如果这是你想学的,你也想有这样的实力与认知,欢迎加入我的《逆向思维带你玩转Linux内核》小班

关于Linux进程的内存空间,我之前写过文章

Linux内核的规则束缚

还剩最后一层认知:Linux内核是如何提供内存保护的?那硬件支持呢?Linux内核就是使用了硬件提供的支持才能实现内存保护,所以它俩的本质是一个,只不过是两个层面

那硬件提供了什么支持呢?4-level paging,即4级分页,如图。关于4级分页,这里我就不展开讲了,但是我会给你讲明白硬件支持与只读区域的关系。

常量字符串为什么不能修改,字符型常量和字符串常量如何使用(11)


关于虚拟内存分页机制,你可以自己去研究学习,后面我也会写文章详谈,如果你想学习,关注公众号【硬核子牙】

当CPU尝试修改常量字符串的时候,CPU肯定有字符串的内存地址,这个地址叫逻辑地址,传给CPU内部的段部件,x64 CPU采用平坦模型,段基址一律为0,段部件产出线性地址,传给CPU内部的页部件

常量字符串为什么不能修改,字符型常量和字符串常量如何使用(12)

栏目热文

怎么解决字符常量中的字符过多(字符常量合法的条件)

怎么解决字符常量中的字符过多(字符常量合法的条件)

一、字符串1、基本特性2、JDK9中String变化二、String的内存分配三、字符串拼接操作3.1、案例分析3.2、...

2024-04-26 12:29:31查看全文 >>

怎样正确判断字符常量(字符型常量怎样算合法)

怎样正确判断字符常量(字符型常量怎样算合法)

本文我们将分享介绍一道关于java的“字符串面试题~代码实现题”,主要实现的功能“查找特定的字符串单词word在一个长长...

2024-04-26 12:49:28查看全文 >>

四级成绩查询共多长时间(四级成绩查询时间有截止日期吗)

四级成绩查询共多长时间(四级成绩查询时间有截止日期吗)

2023年下半年全国大学英语四、六级考试(CET)成绩查询服务将于2024年2月27日上午6时开通。来“中国教育发布”客...

2024-04-26 12:36:29查看全文 >>

四级成绩用什么查询(四级怎么查询成绩最新)

四级成绩用什么查询(四级怎么查询成绩最新)

四六级成绩查询。12月份第一次考四级的同学,成绩通常会比估计的高个几十分。今天教你们一下不需要准考证号去查询四六级成绩的...

2024-04-26 12:45:47查看全文 >>

四级怎么查以前的成绩(四级怎么查历史成绩)

四级怎么查以前的成绩(四级怎么查历史成绩)

四六级成绩会被覆盖吗?四六级成绩这次比上次更低了怎么办?听说点赞的同学不管怎样都能过级。四六级成绩会被覆盖吗?按最新还是...

2024-04-26 12:30:26查看全文 >>

常量中有换行符解决方法(c语言常量中有换行符怎么解决)

常量中有换行符解决方法(c语言常量中有换行符怎么解决)

【分享成果,随喜正能量】千淘万漉虽辛苦,吹尽狂沙始到金。无人问津的日子里,定心,静心,做好自己的事,一切烦躁焦虑都烟消云...

2024-04-26 12:04:03查看全文 >>

整型常量要用逗号隔开吗(长整型常量后面要跟什么字母)

整型常量要用逗号隔开吗(长整型常量后面要跟什么字母)

1、#define宏定义以#号开头的都是编译预处理指令,它们不是C语言的成分,但是C程序离不开它们,#define用来定...

2024-04-26 12:02:21查看全文 >>

字符常量过多怎么解决(常见的字符常量怎么判断)

字符常量过多怎么解决(常见的字符常量怎么判断)

作为一个面向对象的编程语言,Java提供了自动的内存管理机制,这也成为了很多面试官最喜欢问的问题。从内存管理的角度来谈谈...

2024-04-26 12:49:02查看全文 >>

为什么不能用符型常量(字符型常量与符号常量区别)

为什么不能用符型常量(字符型常量与符号常量区别)

先初步了解引用、指针的一些注意事项。引用并非对象引用必须初始化引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果...

2024-04-26 12:15:46查看全文 >>

文档排行