我有以下代码用于从缓冲区数组中提取字符串。它工作正常。但是,长度变量是在运行时确定的,因此如果超出范围,就会发生异常。当然,可以轻松调整代码以检查长度变量(相对于偏移变量)是否在边界内。虽然我很好奇为什么以下代码不起作用,因为异常似乎通过 try-catch 语句(并被调试器捕获)。
try
{
string value(&buffer[offset], length);
// ...
}
catch (exception& e)
{
// ...
}
catch (...)
{
// ...
}
在 Windows 7 64 位上运行,MSVCR 编译。