违规代码
string foo(string a, string k) {
string output;
for (int i = 0; i < a.size(); i++) {
output[i] = a[i] ^ k[i];
}
return output;
}
答案 0 :(得分:6)
string output;
创建一个空字符串。 Going output[i]
导致访问超出字符串边界的未定义行为。
先加入:
output.resize( a.size() );
另请考虑检查if ( k.size() < a.size() ) throw .....