重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

vb.net堆栈溢出 vb堆栈空间溢出

vb堆栈空间溢出

递归可以用迭代来等价代替。

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对成都餐厅设计等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业网站推广优化,H5建站,响应式网站。

Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Private Const QueueVolume = 1000000

Private QueueX(QueueVolume) As Long

Private QueueY(QueueVolume) As Long

Private SrcColor As Long, DestColor As Long

Private QStart As Long, QEnd As Long

Private Function EnQueue(ByVal X As Long, ByVal Y As Long) As Boolean

If (QEnd + 1) Mod QueueVolume QStart Then

QueueX(QEnd) = X

QueueY(QEnd) = Y

QEnd = QEnd + 1

EnQueue = True

Else

EnQueue = False

End If

End Function

Private Function DeQueue(ByRef X As Long, ByRef Y As Long) As Boolean

If QStart QEnd Then

X = QueueX(QStart)

Y = QueueY(QStart)

QStart = QStart + 1

DeQueue = True

Else

DeQueue = False

End If

End Function

Private Sub Qytc()

Dim X As Long, Y As Long

Dim cr As Long

Do While DeQueue(X, Y)

cr = GetPixel(Picture1.hdc, X, Y)

If cr = SrcColor Then

Picture1.PSet (X, Y), DestColor

EnQueue X, Y - 1

EnQueue X, Y + 1

EnQueue X - 1, Y

EnQueue X + 1, Y

End If

DoEvents

Loop

End Sub

Private Sub Command1_Click()

EnQueue 5, 6

Qytc

End Sub

Private Sub Form_Load()

QStart = 0 '队列左端

QEnd = 0 '队列右端

SrcColor = RGB(255, 0, 0)

DestColor = RGB(0, 0, 255)

End Sub

说明:放一个PictureBox1,ScaleMode设为3-pixel,BackColor改成红色。

放一个按扭Command1。

如果队列长度不够,把Private Const QueueVolume = 1000000 再改大点。

只适用于VB6。

(用VB.net就不用这么麻烦了)

VB.NET中,PInvoke 函数 GetWindowThreadProcessId 调用导致堆栈不对称

题主用的是 VB6 时代的 Windows API,那里面的 Long 类型相当于 .NET 里的 Int32,声明 API 时要把所有 Long 类型替换成 Int32 才可以正常使用,否则堆栈溢出。

另外操作内存这种函数需要管理员权限来运行,否则程序会报错甚至崩溃。

在VB.NET中算数运算溢出是什么意思

溢出就是说你设置的变量不合适,数据大于你设置的变量范围了.

比如你设置的是int,,,,而数据超过了256,就会

溢出

VB.net 算术运算导致溢出

题主这个FunctionFindWindow(一堆参数)AsLong,返回值是个Long,而下面wd=FindWindow(),wd却是个Integer类型的,当然会溢出。楼上说都改成Long确实可以,不过题主的API声明是从VB里拷贝过来的吧?VB里的Long到.NET中就是Int32了,所以应该把上面FindWindow的返回类型由Long改为Int32(或者Integer)才是正解。


当前名称:vb.net堆栈溢出 vb堆栈空间溢出
路径分享:http://cqcxhl.cn/article/hidhes.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP