我的代码:
void RandomBuffer(ByteVector& out, size_t size)
{
try
{
out.resize(size);
memcpy(&out[0], (void*)memcpy, size);
}
catch (...)
{
return;
}
}
我想生成某种随机缓冲区(以快速方式并且像随机缓冲区一样)。所以我使用了提供的代码。对于小缓冲区,它工作得很好,但我有一些大缓冲区 334692352
字节,但它失败了。
之后我尝试使用try
-catch
,但无论如何我得到了一个异常,那就是访问冲突读取位置
我想问一下,为什么这个异常没有被catch
捕获。
最佳答案
根据编译器和操作系统的不同,访问冲突可以作为异常引发,由操作系统或 CPU 捕获。如果操作系统捕获它并终止进程,您无能为力(但可以通过检查边界和 memcpy 来防止访问冲突)
关于c++ - 未捕获异常。访问违规读取位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19830949/