1
38
它的创建位置实际上是编译器编写者的一个实现决策。很可能,字符串文本将存储在只读内存段中,因为它们永远不会更改。 在旧的编译器时代,您曾经拥有类似这些文本的静态数据,以及全局但可更改的数据。它们存储在文本(代码)段和数据(初始化数据)段中。
即使你有这样的代码
记住,我的意思不是只读存储器,而是专门用来存储不变的东西的存储器(它可能被操作系统标记为真正的只读)。
它们也不会被摧毁直到
|
2
42
是的,字符串在整个程序期间都是有效的,即使在静态对象销毁期间也是如此。 2.13.4/1标准中规定
标准规定了3.7.1/1中的“静态存储时间”:
|
3
3
好。。。对。它们是必须的;组成每个字符串中字符序列的信息必须在某个地方。如果要动态地分配它们,然后初始化它们,用于初始化的信息将驻留在哪里?因此,更有效的方法是简单地将字符串设置为静态,以便在程序加载完成后,这些字符串始终可用且有效。 |
4
-1
字符串文本存储在只读内存段中 |
davidzxc574 · 将字符串缩放为字符 2 年前 |
mbilyanov · 比较C中动态分配的字符串 2 年前 |
Htin Aung Lu · 如何用条件[Python]替换所有字符 2 年前 |
Prago · 如何检查用户输入是否为单个字符 2 年前 |
Kyle Thompson · 来自字符数组的奇怪行为 2 年前 |
Henry Villa · 如何将数字转换为字符数? 2 年前 |
maya · 为什么我不能在新字符串中添加字符? 2 年前 |
pbbb · 在C中实现strcat时的奇怪行为 2 年前 |