不可以。原因有以下几点:
“只有客户发展了,才有我们的生存与发展!”这是创新互联的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站设计制作、成都网站制作、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
1、因为堆栈溢出意味着堆内存已耗尽,如果只是简单地用on error resume next语句忽略并继续向下执行,轻则程序运行会出现异常,重则会导致系统奔溃。
2、出现堆栈溢出,往往是因为对函数的递归调用不合理或使用递归算法不合适(应考虑使用其它算法替代)造成的,这属于编程上的逻辑错误,正确的做法应该是修改代码,排除逻辑错误。如果只是简单地忽略它,等同于主动为应用程序留下了一个可供别人攻击的堆栈溢出漏洞。
3、即便暂时无法修复代码,也应该以对话框或其它形式通知程序使用者发生了什么事情,由程序使用者来决定怎样处理,而不是简单地忽略它。
默认堆栈大小1 MB
具体的我也不了解,在MSDN上找了到了点东西看看对你有没帮助:
建立新线程指定并线程的最大堆栈大小:
用EDITBIN的/STACK选项:
不行还是在C++那里想办法吧,比如减少堆栈的使用,少用递归之类的。
水平不够就说这些了。
很简单,原因有二。第一,VB里long是32位,但是VB.NET里是64位,Dim ksWND As Integer才对。第二,VB在API里默认传址,而VB.NET默认传值,所以API里要添加Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,添加"ByRef" lpRect As RECT) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long,byref lpRect As RECT) As Integer
Private Structure RECT
Dim Left As Integer
Dim Top As Integer
Dim Right As Integer
Dim Bottom As Integer
End Structure
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ksWND As integer
Dim ksTitle As String
Dim winS As RECT
If TextBox1.Text "" Then
ksTitle = TextBox1.Text
ksWND = FindWindow(vbNullString, ksTitle)
GetWindowRect(ksWND, winS)
MsgBox("左上角坐标(" winS.Left "," winS.Top ")" vbCrLf "右下角坐标(" winS.Right "," winS.Bottom ")" vbCrLf "窗口高" winS.Bottom - winS.Top "窗口宽" winS.Right - winS.Left)
Else
MsgBox("请填写窗口名称")
End If
End Sub
题主用的是 VB6 时代的 Windows API,那里面的 Long 类型相当于 .NET 里的 Int32,声明 API 时要把所有 Long 类型替换成 Int32 才可以正常使用,否则堆栈溢出。
另外操作内存这种函数需要管理员权限来运行,否则程序会报错甚至崩溃。
网站栏目:vb.net堆栈失衡的简单介绍
转载源于:https://www.cdcxhl.com/article28/dsepocp.html
成都网站建设公司_创新互联,为您提供手机网站建设、网站策划、营销型网站建设、App开发、关键词优化、小程序开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联