.NET中的缓冲区溢出错误的常见原因

问题描述:

我正在寻找.NET下缓冲区溢出错误的常见原因。.NET中的缓冲区溢出错误的常见原因

我知道在托管.NET代码下缓冲区溢出是不可能。然而这个异常在.NET应用程序的范围内仍然是可能的。

事情我想的 -

  • 有效参数到COM对象调用
  • 有效参数的PInvoke/Win32调用

什么是调试缓冲区溢出错误的最好方法是什么?

+0

我没有看到这里有一个真正的问题:任何时候调用一个非托管方法写入长度未经检查的内存时,都会发生缓冲区溢出。 – 2009-02-08 23:37:26

+0

我同意mitch – Element 2009-02-08 23:42:24

从评论的问题:

那么你们如何去了解下.NET调试缓冲区溢出错误?

大多数情况下,首先没有什么可调试的。我的意思是,当然存在一个错误,你需要修复它,但是错误不在你的代码中。这是在一个你管理的非托管图书馆里,你无法改变。你唯一能做的就是不用那种库。

这是一个常见原因:非托管库中的一个错误。

如果您调用一个没有bug的非托管库,但库期望您明确地告诉它缓冲区的大小,并给它错误的编号,也会发生这种情况。这是您的代码需要解决的问题。但是,它在.Net中很少发生,因为查找缓冲区的大小通常与检查字节数组的.Length属性一样简单。