- 主题:一直以为c++的int相乘溢出会变为负数, 遇到bug才发现是未定义
std::vector<std::string> vec;
for (int i = 0; i < 1000; i++) {
vec.push_back("A0x17" + std::to_string(i * 0x1234567));
}
这个程序会core掉
--
修改:stub FROM 223.160.130.*
FROM 61.48.14.*
【 在 stub 的大作中提到: 】
: std::vector<std::string> vec;
: for (int i = 0; i < 1000; i++) {
: vec.push_back("A0x17" + std::string(10, 'a'));
: ...................
不知所云, 自己代码写错了吧, 把一个字符数组和std::string不越界才怪。
如果字符串相连, vec.push_back(std::string("A0x17") + std::string(10, 'a'));
--
FROM 115.171.244.*
【 在 poggy 的大作中提到: 】
:
: 不知所云, 自己代码写错了吧, 把一个字符数组和std::string不越界才怪。
: 如果字符串相连, vec.push_back(std::string("A0x17") + std::string(10, 'a'));
sting重载了字符数组和string的+运算符
--
FROM 223.160.130.*
你这代码和标题对不上啊,而且这段代码也没什么问题。
【 在 stub 的大作中提到: 】
: std::vector<std::string> vec;
: for (int i = 0; i < 1000; i++) {
: vec.push_back("A0x17" + std::string(10, 'a'));
: ...................
--
FROM 111.206.173.*
【 在 ArchLinux 的大作中提到: 】
: 你这代码和标题对不上啊,而且这段代码也没什么问题。
:
修改了,你开O2优化试试 应该会core掉
--
FROM 223.160.130.*
把你的编译器扔掉。
【 在 stub 的大作中提到: 】
: std::vector<std::string> vec;
: for (int i = 0; i < 1000; i++) {
: vec.push_back("A0x17" + std::string(10, 'a'));
: ...................
--来自微微水木3.5.14
--
FROM 222.64.91.*
【 在 foliver 的大作中提到: 】
: 把你的编译器扔掉。
gcc
--
FROM 223.160.130.*
我用g++编译,没有挂掉,但是停不下来了。当然了,开UBSAN是会报错的。
【 在 stub 的大作中提到: 】
: 修改了,你开O2优化试试 应该会core掉
--
FROM 111.206.173.*
特定在我16.04机器上试了下,没啥问题
【 在 stub 的大作中提到: 】
: 【 在 foliver 的大作中提到: 】
: : 把你的编译器扔掉。
: gcc
: ...................
--来自微微水木3.5.14
--
FROM 222.64.91.*
【 在 foliver 的大作中提到: 】
: 特定在我16.04机器上试了下,没啥问题
开O2优化
--
FROM 223.160.130.*