我正在寻找 .NET 下缓冲区溢出错误的常见原因。
我知道在托管的 .NET 代码下缓冲区溢出是不可能的。但是,在 .NET 应用程序范围内仍然可能出现此异常。
我想到的东西——
- COM 对象调用的有效参数
- PInvoke/Win32 调用的有效参数
调试缓冲区溢出错误的最佳方法是什么?
从评论到问题:
那么你们如何去调试.NET 下的缓冲区溢出错误呢?
大多数时候,一开始就没有什么可以调试的。我的意思是,当然存在错误并且您需要修复它,但错误不在您的代码中。它在您调用的非托管库中,您无法更改。您唯一能做的就是不要以这种方式使用该库。
所以这是一个常见原因:非托管库中的错误。
如果您调用没有错误的非托管库,也可能发生这种情况,但该库希望您明确告诉它缓冲区的大小并且您给它错误的数字。这是您需要修复的代码问题。然而,它在 .Net 中很少发生,因为查找缓冲区的大小通常就像检查字节数组的 .Length 属性一样简单。