vb 没运行也会出错?
今天在写一个程序的时候,运行后单击按钮有时候会出现个内存错误,****不能为read,然后vb自己关闭了,有时候单击按钮的时候不会出现内存错误,退出的时候却也出现个内存错...
今天在写一个程序的时候,运行后 单击按钮有时候会出现个内存错误,****不能为read,然后vb自己关闭了,有时候 单击按钮的时候不会出现内存错误, 退出的时候却 也出现个内存错误,退出程序也会错误? ,我想应该是我的代码有问题, 今天晚上又在调试的这个程序,相对下午来说 ,没有 那个 内存错误了, 我F5运行,测试后想添加些注释,于是中断了(就是关闭F5出来的那个程序,我也不知道叫什么), 添加注释的时候,竟然也莫名其妙的出现那个内存错误框??? 到底是怎么回事啊,有人遇到这种情况吗
就在刚才 ,我在修改代码的时候(还没F5运行程序) , 我按下了回车,这时候出现了vb自带的那种错误提示框显示: "内存溢出" ····· ?没运行程序,写代码应该不会出现任何错误吧
----------------------------------------------------
写程序的时候,写的程序有问题 会不会对VB造成一些影响,让VB 不能正常工作?
1楼的话,我重新安装了vb 后,比较不经常出现内存错误了,可是今天却却又出现了
----------------------------------------------------
最后一楼 说的对: 我后来查下了问题,的确
如最后一楼所说的“典型的内存访问越界”, 因为我定义一个10字节的变量,却用来读取15个字节长度
dim bf(0 to 10)
reanProcessmemory hprocess,byval address,bf(0),15,4 读取15个的字节 ,的确是这句出现了问题,修改下就没问题了 。 展开
就在刚才 ,我在修改代码的时候(还没F5运行程序) , 我按下了回车,这时候出现了vb自带的那种错误提示框显示: "内存溢出" ····· ?没运行程序,写代码应该不会出现任何错误吧
----------------------------------------------------
写程序的时候,写的程序有问题 会不会对VB造成一些影响,让VB 不能正常工作?
1楼的话,我重新安装了vb 后,比较不经常出现内存错误了,可是今天却却又出现了
----------------------------------------------------
最后一楼 说的对: 我后来查下了问题,的确
如最后一楼所说的“典型的内存访问越界”, 因为我定义一个10字节的变量,却用来读取15个字节长度
dim bf(0 to 10)
reanProcessmemory hprocess,byval address,bf(0),15,4 读取15个的字节 ,的确是这句出现了问题,修改下就没问题了 。 展开
4个回答
展开全部
楼上搞笑。这种问题80%是你的程序写的有漏洞。
操作了内存或者一些比较危险的句柄,使用了CopyMemory、VarPtr,CallWindowProc之类的相对于VB本身而言比较危险的操作函数,这样你在运行程序的时候稍微不注意可能就会导致内存访问越界、数据覆盖、内存泄漏、段异常、栈溢出、栈失衡等问题。
注意,这些问题可能不是一发生就立刻导致程序死掉的,而往往带有滞后性,有问题的代码执行完毕之后可能表面上没有什么异常,但是整个程序的运行环境某些方面已经被破环了(比如栈失衡),或者是VB托管的一些句柄之类的失效,这些会在之后的某个时间导致问题。
至于你的程序为啥会导致VB的IDE挂掉,那是因为按F5运行程序,其实VB是工作在解释模式下的,你写的程序和VB的IDE是同一个进程,所以你程序内的错误会导致VB的IDE的出错,而且往往是滞后性的,当你程序退出之后,某些错误才会突然发作(最简单一个例子,你在VB里面申请一个数组,然后使用CopyMemory改变它的SAFE_ARRAY结构,如果在退出程序的时候没有改回来,那么在程序退出时VB的IDE就会因为回收空间出错而崩掉,当然这个属于比较BT的用法了)。
你如果新打开一个VB,载入你的工程,编译之后独立启动运行,就不会出现IDE错误的现象。这也是许多人在VB6下面调试比较危险代码时候的一个常用手段。或者就养成每次F5之前先保存的习惯。
————————————————————————
补充:
都说了这80%是你代码的问题,如果你都重新换了个VB还出现这种问题,那20%也基本上被排除了。你还是按我说的先检查下你的代码吧。如果实在有不明白的可以贴代码片段出来让大家看看,帮你找毛病。
操作了内存或者一些比较危险的句柄,使用了CopyMemory、VarPtr,CallWindowProc之类的相对于VB本身而言比较危险的操作函数,这样你在运行程序的时候稍微不注意可能就会导致内存访问越界、数据覆盖、内存泄漏、段异常、栈溢出、栈失衡等问题。
注意,这些问题可能不是一发生就立刻导致程序死掉的,而往往带有滞后性,有问题的代码执行完毕之后可能表面上没有什么异常,但是整个程序的运行环境某些方面已经被破环了(比如栈失衡),或者是VB托管的一些句柄之类的失效,这些会在之后的某个时间导致问题。
至于你的程序为啥会导致VB的IDE挂掉,那是因为按F5运行程序,其实VB是工作在解释模式下的,你写的程序和VB的IDE是同一个进程,所以你程序内的错误会导致VB的IDE的出错,而且往往是滞后性的,当你程序退出之后,某些错误才会突然发作(最简单一个例子,你在VB里面申请一个数组,然后使用CopyMemory改变它的SAFE_ARRAY结构,如果在退出程序的时候没有改回来,那么在程序退出时VB的IDE就会因为回收空间出错而崩掉,当然这个属于比较BT的用法了)。
你如果新打开一个VB,载入你的工程,编译之后独立启动运行,就不会出现IDE错误的现象。这也是许多人在VB6下面调试比较危险代码时候的一个常用手段。或者就养成每次F5之前先保存的习惯。
————————————————————————
补充:
都说了这80%是你代码的问题,如果你都重新换了个VB还出现这种问题,那20%也基本上被排除了。你还是按我说的先检查下你的代码吧。如果实在有不明白的可以贴代码片段出来让大家看看,帮你找毛病。
展开全部
你的vb有问题。。。。。是vb的错,不是你的,,,,,,,,,重装vb吧,你那已经用不了了
你的编程操作了内存或其他危险api吗?
如果是,那可能就是你程序不严谨,如果你就只是用vb的内部函数和一些控件,这绝对不是你程序的问题
你的编程操作了内存或其他危险api吗?
如果是,那可能就是你程序不严谨,如果你就只是用vb的内部函数和一些控件,这绝对不是你程序的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是vb的问题,你查查病毒吧,因为“****不能为read”是指定内存不能读的意思,如果是“0x0000....”的那就说名是程序干脆就没有被分配一个内存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-09-01
展开全部
“****不能为read”是典型的内存访问越界,比如VB中一个简单的语句就可以导致这个错误:
CopyMemory ByVal 0&, 0, 1 '向地址0写入数据
你确定你的VB程序中有没有直接访问内存?或者有没有引用一些其他的库?这些库可能不完善或者库里面有比较危险的操作。
CopyMemory ByVal 0&, 0, 1 '向地址0写入数据
你确定你的VB程序中有没有直接访问内存?或者有没有引用一些其他的库?这些库可能不完善或者库里面有比较危险的操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询