.NET中的缓冲区溢出错误的常见原因
问题描述:
我正在寻找.NET下缓冲区溢出错误的常见原因。.NET中的缓冲区溢出错误的常见原因
我知道在托管.NET代码下缓冲区溢出是不可能。然而这个异常在.NET应用程序的范围内仍然是可能的。
事情我想的 -
- 有效参数到COM对象调用
- 有效参数的PInvoke/Win32调用
什么是调试缓冲区溢出错误的最好方法是什么?
答
从评论的问题:
那么你们如何去了解下.NET调试缓冲区溢出错误?
大多数情况下,首先没有什么可调试的。我的意思是,当然存在一个错误,你需要修复它,但是错误不在你的代码中。这是在一个你管理的非托管图书馆里,你无法改变。你唯一能做的就是不用那种库。
这是一个常见原因:非托管库中的一个错误。
如果您调用一个没有bug的非托管库,但库期望您明确地告诉它缓冲区的大小,并给它错误的编号,也会发生这种情况。这是您的代码需要解决的问题。但是,它在.Net中很少发生,因为查找缓冲区的大小通常与检查字节数组的.Length属性一样简单。
我没有看到这里有一个真正的问题:任何时候调用一个非托管方法写入长度未经检查的内存时,都会发生缓冲区溢出。 – 2009-02-08 23:37:26
我同意mitch – Element 2009-02-08 23:42:24