算术运算导致溢出

Lef*_*nis 3 vb.net windows-xp visual-studio-2010

当我发送:

Result = CInt(NetApiBufferFree(pBuffer))
Run Code Online (Sandbox Code Playgroud)

我收到(有些时候)这个错误:

Arithmetic operation resulted in an overflow.
Run Code Online (Sandbox Code Playgroud)

究竟是什么意思?以及我如何解决它?

Aby*_*byx 10

这意味着CInt参数超出范围Integer,-0x80000000到0x7FFFFFFF并且它在NetApiBufferFree返回错误时发生:错误代码大于0x80000000.

没有unsigned int32类型,所以请使用CLng而不是CInt.


关于错误的来源.您应该找到您获得的错误代码:调用MsgBox或将其记录到文件,或使用断点.接下来找到它的描述.如果它不会帮助你(例如错误将是E_FAIL),添加代码以检查该pBuffer值是否有效 - 它没有被某些东西修改,并且尚未被释放.添加NetApiBuffer*呼叫记录.