- 主题:一直以为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.*
【 在 poggy 的大作中提到: 】
:
: 不知所云, 自己代码写错了吧, 把一个字符数组和std::string不越界才怪。
: 如果字符串相连, vec.push_back(std::string("A0x17") + std::string(10, 'a'));
sting重载了字符数组和string的+运算符
--
FROM 223.160.130.*
【 在 ArchLinux 的大作中提到: 】
: 你这代码和标题对不上啊,而且这段代码也没什么问题。
:
修改了,你开O2优化试试 应该会core掉
--
FROM 223.160.130.*
【 在 foliver 的大作中提到: 】
: 把你的编译器扔掉。
gcc
--
FROM 223.160.130.*
【 在 foliver 的大作中提到: 】
: 特定在我16.04机器上试了下,没啥问题
开O2优化
--
FROM 223.160.130.*
【 在 CMOO 的大作中提到: 】
: 为了验证int相乘溢出,写出这坨测试代码,简单问题复杂化,还没得出结论
:
你懂啥叫未定义么
--
FROM 61.48.14.*
【 在 CMOO 的大作中提到: 】
: 但我懂你很搓
:
呵呵,那你说这个怎么就不能说明问题
--
FROM 223.160.130.*