![]() |
1
11
当然没有保证,但这是一个常见的(我认为)优化。 C++标准表示(2.134/2)字符串文字:
要清楚,你不应该编写代码,假设这种优化将发生-正如Chris Lutz所说,C++代码依赖于这一代码是等待被打破。 |
![]() |
2
8
这叫做 string interning 在你的情况下,最好不要依赖它。范围是不同的,但我觉得自己在这个问题上不是很有能力 |
![]() |
3
3
GCC使用这种优化,而微软则使用这种优化(他们称之为 string pooling )它只是优化,C++标准明确声明不能使用(2.2.4/2)。另外,假设您将从其他模块/库中获得指向字符串的指针——我认为编译器在这种情况下不可能进行这样的优化。 |
![]() |
4
2
由于字符串文本是只读的,因此标准允许这样的优化。
是的,gcc/g++经常这样做。Afaik,有一个打开/关闭的选项。 |
![]() |
5
2
没有这样的保证。语言只是说他们 可以 地址相同。或者他们可能不会。 |
![]() |
6
0
实际上,有一个简单的解决方案:
您不能比较两个不同的字符串文字,但使用常量全局变量来表达您的意思,它是
一些外部的东西可能不见了…我很难对付那只野兽 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |