VB6的内存泄漏(VB6 Memory Leak)

2019-09-25 14:59发布

可以在VB6程序不包含关键字“新”有内存泄漏?

如果有,请提供一个例子。

Answer 1:

总结到目前为止的答案:调用另一个组件可能会引入内存泄漏。 该组件可以马车,或者你可能会误用。 该组件可以是一个OCX或DLL(包括API调用到Windows DLL,它是内存泄漏和Windows资源何况很多其他惊险的问题一个很好的方式)。

而一个迂腐一点:你可以创建使用对象CreateObject ,所以你可以通过内存泄漏循环引用不使用New 。 而onedaywhen指出在评论中你也可以创建一个表单变量循环引用不使用New 。 但我认为这个问题的观点是VB6的内存泄漏是否能有除了循环引用的其他原因。


递归的答案不会导致内存泄漏-引用计数将收拾环路的每次执行的内存-看到我的答案的评论。



Answer 2:

你可以调用一些存在内存泄漏第三方DLL。



Answer 3:

是的,可以。 在我了解了特定的Windows API调用内存泄漏,VB6的程序我写了使用的透明位块传输展出了内存泄漏。 所以,当泄漏的程序本身不是,它是在那VB6称为Win32 API中的功能之一。



Answer 4:

...不要忘记OCX控件内存泄漏



Answer 5:

我们不得不使用一个模块在一个全局变量下,COM +运行时泄漏。 这是很久以前的事不记得细节。



Answer 6:

这是什么痴迷的新关于内存泄漏? 我看不出有任何关系除了通过将其设置为Nothing后触摸引用变量分配另一个对象。

如果你这样做,你可能有一个逻辑错误呢。 不使用新只是意味着你吹起来,而不是,我几乎没有“固定”任何理念。

最糟糕的泄漏可能涉及的API调用像那些需要隐含地分配数据结构的明确的清理/释放OLE或GDI例程。

但正如我所说,新的内存泄漏关联听起来坚果给我。



文章来源: VB6 Memory Leak