违规代码
string foo(string a, string k) {
string output;
for (int i = 0; i < a.size(); i++) {
output[i] = a[i] ^ k[i];
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
string output;创建一个空字符串.Going output[i]会导致访问超出字符串边界的未定义行为.
先添加:
output.resize( a.size() );
Run Code Online (Sandbox Code Playgroud)
还要考虑检查 if ( k.size() < a.size() ) throw .....