算术运算导致溢出

时间:2010-11-30 07:31:00

标签: vb.net visual-studio-2010 windows-xp

当我发送时:

Result = CInt(NetApiBufferFree(pBuffer))

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

Arithmetic operation resulted in an overflow.

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

2 个答案:

答案 0 :(得分:10)

这意味着CInt参数超出Integer,-0x80000000到0x7FFFFFFF的范围 当NetApiBufferFree返回错误时会发生错误:错误代码大于0x80000000。

没有unsigned int32类型,因此请使用CLng代替CInt


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

答案 1 :(得分:1)

最佳答案是替换'double'代替'Int16 / Int32 / Int64'

有时候文件转换需要很大的数字.. double永远不会有最大范围。