字符和 int 连接何时会导致 seg 错误?
When does character and int concatenation result in seg fault?
#include <iostream>
#include <string>
using namespace std;
int main()
{
int number = 900;
cout << std::string("Hello, World!" + number) << std::endl;
return 0;
}
我知道正确的解决方案是使用std::to_string(number)
.但这里的问题是,为什么我没有出现分段错误?我什至通过瓦尔格林德运行它。字符串长度约为 13,我将指针移动 900。
表达式"Hello, World!" + number
是添加到int
的const char[]
文字。前者衰减为const char*
指针,您可以通过指针算术向其添加number
。
由于最后一个指针不在原始字符串常量中,因此将无效的const char*
指针传递给std::string
构造函数,并且程序的行为未定义。此时可能发生任何事情,包括运行时崩溃。积极优化的编译器可能会完全省略未定义的表达式;这种情况正变得越来越普遍。
繁荣!
如果你想将900
连接到字符串,那么你可以写
std::cout << std::string("Hello, World!" + std::to_string(number)) << std::endl;
相关文章:
- C++ - 将元素按升序插入数组的 SEG 错误
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 字符串上的合并排序上的 Seg 错误
- 导致 Seg 错误的 SingleLinkedList 的析构函数
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- 函数抛出seg错误,我不知道为什么
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- 由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
- 尝试访问 3D 矢量中的元素时出现 Seg 错误
- 垫子对象数组太大会导致 Seg 错误
- 为什么push_back成矢量<矢量<int>>导致 seg 错误?
- 在向量中存储字符串存在 SEG 错误
- 更改本地类名时出现 seg 错误
- 使用 ->GetString( " ") 时出现 Seg 错误,它位于单独的类中
- 将字符数组转换为 std::string 以传递到 std::bitset seg 错误
- 字符和 int 连接何时会导致 seg 错误?
- 静态数组溢出堆栈(seg 错误 11)仅在类定义内部时,否则不会..?
- .EOF 在读取文件时导致 Seg 错误:FIXXED
- 在 qt5 中使用 QSharedPointer 时出现 Seg 错误
- 为什么我的 if 语句会出现 seg 错误?