请教VB6.0会不会自动释放内存

gooore 2009-09-11 05:02:32
申明的对象挺多的。

不知道可不可以自动释放,手动释放好累。。

谢谢
...全文
643 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
捧剑者 2009-09-22
  • 打赏
  • 举报
回复
ATL写的COM?
对于COM组件,当引用变量越出生存范围时,VB在幕后自动调用Release,将引用计数减一。引用计数为0时,COM对象将被销毁。
理论上如此,但实践中不set Nothing仍可能会有内存泄漏的问题,所以,还是应该set Nothing为妥。
另外,如果COM组件自己的BUG造成的内存泄漏问题,在VB中set Nothing也没用,那还得到C++中修复BUG.
xiaoyaobihai 2009-09-22
  • 打赏
  • 举报
回复
咸清 2009-09-22
  • 打赏
  • 举报
回复
我就是过来学一下
deertao 2009-09-22
  • 打赏
  • 举报
回复
如果定义了类似类的东西,VB是不知道释放的,除非SET NOTHING,否则会把系统资源慢慢消耗掉,最后程序越走越慢。
VB没有提供自动释放内存的机制。
gooore 2009-09-21
  • 打赏
  • 举报
回复
我声明的全是VC的ATL组件。然后VB引用的,声明了很多,手动释放好麻烦。

Tiger_Zhao 2009-09-16
  • 打赏
  • 举报
回复
你的问题太笼统,就好像:到医院看不能不能治好?
神马都能聊 2009-09-16
  • 打赏
  • 举报
回复
你的问题答案就是不会,释放的过程需要你自己来控制。
hanvan 2009-09-16
  • 打赏
  • 举报
回复
gooore 2009-09-16
  • 打赏
  • 举报
回复
那位大侠给个明白说法?

好像意见还很不统一啊
slowgrace 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 chenhui530 的回复:]
引用 9 楼 slowgrace 的回复:
陈辉,那天你和赵老鼠说的释放字符串指针的事情,我好像还是不明白似的。


你哪不明白,那天那个代码只是把变量指向的地方更改了
比如两个两边
dim string1 as string
dim string2 as string
string1 = "123"

这时strptr(string2)值为0,我那个代码是把这个值该成strptr(string1)的值所以要想程序稳定在使用完后还需要把strptr(string2)值归0免得系统去重复释放一块内存导致未知错误

[/Quote]

谢谢,这回明白了。
赵4老师 2009-09-14
  • 打赏
  • 举报
回复

set New或CreateObject过的对象=Nothing
释放
请参考《VB与VBA技术手册》
chenhui530 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 slowgrace 的回复:]
陈辉,那天你和赵老鼠说的释放字符串指针的事情,我好像还是不明白似的。
[/Quote]

你哪不明白,那天那个代码只是把变量指向的地方更改了
比如两个两边
dim string1 as string
dim string2 as string
string1 = "123"

这时strptr(string2)值为0,我那个代码是把这个值该成strptr(string1)的值所以要想程序稳定在使用完后还需要把strptr(string2)值归0免得系统去重复释放一块内存导致未知错误
KGallery 2009-09-14
  • 打赏
  • 举报
回复
在不用时
手动将对象设置成Nothing
Tiger_Zhao 2009-09-14
  • 打赏
  • 举报
回复
不能绝对可以确认是或否,需要具体问题具体分析。
只能说在大多数情况下,在 VB 框架内的对象、字符串、数组等局部变量会自动释放;API 是 VB 外的,必须手动释放。

自动释放只是一种理想,无论哪种语言、采用哪种方案,都不能做到 100% 自动释放。

fengfeng28 2009-09-14
  • 打赏
  • 举报
回复
我写的一个程序,在关闭之后,打开进程,里面还可以看到。
我的程序中关闭时,直接是END。但是有的电脑上运行,在进程中就看不到。
这个说明,跟运行库有关系,最好是释放所有的对象。
嗷嗷叫的老马 2009-09-12
  • 打赏
  • 举报
回复
路过一下下......
yangbo_cuit 2009-09-12
  • 打赏
  • 举报
回复
这要看变量的生成周期
养成好习惯,用完之后set nothing
wwflower 2009-09-12
  • 打赏
  • 举报
回复
退出程就行了。
photoplan 2009-09-12
  • 打赏
  • 举报
回复
好像不会,否则没必要开发 vb.net, .net下才有真正的内存管理

局部变量自动释放那个不算,高级语言都有这个特征,进程结束收回内存也不算,那是操作系统保证的
unsv29mj 2009-09-11
  • 打赏
  • 举报
回复
static 声明的 全局变量的 不会 。
别的量会吧

不清楚
加载更多回复(15)

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧