|
|
1
2
为什么
(无论如何应该更快)。 |
|
|
2
1
不,std::字符串连接绝对不应该依赖于运行时,但无论如何
我猜您在某个地方有某种缓冲区溢出或无效的指针算术,所以您的程序会覆盖包含那些“常量”值的内存。无论您的内存最终在哪里,都是运行时(因此是操作系统版本)特有的。在过去,通过切换编译器或优化器选项,我被类似的事情困住了。 正如您提到的在原始数组中保留指向std::string实例的原始指针,这样的错误并非完全不可能,但可能很难检测到,因为使用调试构建不会给您任何迭代器检查所有这些都是原始的东西…祝你好运。 |
|
|
3
1
我不认为这是导致问题的评估顺序。这是因为在开始和结束时都有常量char数组
串联运算符认为val_tag_opn和val_tag_不是空终止符字符串。因此,优化器只是忽略了他们认为它是垃圾。
这确实解决了问题。 |
|
|
4
0
正如FBONNET所说,这是一个评估问题的顺序。 如果严格从左到右对该行进行计算,则每个加法的结果是一个std::string对象,该对象有一个用于加法的运算符重载,并且按预期工作。 如果没有从左到右进行评估,那么你最终会把指针加在一起,谁知道这会给你带来什么。 避免这个构造,只需在std::string上使用+=操作符。 |
|
AstralHex · 矩阵乘法代码工作不正常 11 月前 |
|
|
Giogre · 为包含许多数值字段的简单“struct”重载比较运算符 11 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 11 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 11 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 11 月前 |