VB6内存泄漏

VB6内存泄漏,vb6,memory-management,memory-leaks,Vb6,Memory Management,Memory Leaks,不包含关键字“New”的VB6程序是否会出现内存泄漏 如果是,请提供一个示例。您可以调用内存泄漏的第三方DLL。您可以调用内存泄漏的第三方DLL。是的,可以。在我了解特定Windows API调用中的内存泄漏之前,我编写的一个使用透明Blit的VB6程序显示内存泄漏。因此,虽然漏洞不在程序本身,但它存在于VB6在Win32 API中调用的一个函数中。是的,它可以。在我了解特定Windows API调用中的内存泄漏之前,我编写的一个使用透明Blit的VB6程序显示内存泄漏。因此,虽然漏洞不在程序本

不包含关键字“New”的VB6程序是否会出现内存泄漏


如果是,请提供一个示例。

您可以调用内存泄漏的第三方DLL。

您可以调用内存泄漏的第三方DLL。

是的,可以。在我了解特定Windows API调用中的内存泄漏之前,我编写的一个使用透明Blit的VB6程序显示内存泄漏。因此,虽然漏洞不在程序本身,但它存在于VB6在Win32 API中调用的一个函数中。

是的,它可以。在我了解特定Windows API调用中的内存泄漏之前,我编写的一个使用透明Blit的VB6程序显示内存泄漏。因此,虽然漏洞不在程序本身,但它存在于VB6在Win32 API中调用的一个函数中。

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

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

。。。不要忘记OCX中的内存泄漏。。。不要忘记OCXs中的内存泄漏来总结目前的答案:调用另一个组件可能会导致内存泄漏。组件可能有问题,或者您可能误用了它。该组件可以是OCX或DLL,其中包含对Windows DLL的API调用,这是泄漏内存和Windows资源的极好方法,更不用说许多其他令人兴奋的问题了

还有一个迂腐的观点:您可以使用CreateObject创建对象,这样您就可以在不使用New的情况下泄漏内存。并在评论中指出,您还可以使用表单变量创建循环引用,而无需使用新的。但我认为问题的关键在于VB6内存泄漏是否有其他原因,除了循环引用


递归不会导致内存泄漏-引用计数会在每次执行循环时整理内存-请参阅我对答案的评论

总结目前的答案:调用另一个组件可能会导致内存泄漏。组件可能有问题,或者您可能误用了它。该组件可以是OCX或DLL,其中包含对Windows DLL的API调用,这是泄漏内存和Windows资源的极好方法,更不用说许多其他令人兴奋的问题了

还有一个迂腐的观点:您可以使用CreateObject创建对象,这样您就可以在不使用New的情况下泄漏内存。并在评论中指出,您还可以使用表单变量创建循环引用,而无需使用新的。但我认为问题的关键在于VB6内存泄漏是否有其他原因,除了循环引用


递归不会导致内存泄漏-引用计数会在每次执行循环时整理内存-请参阅我对答案的评论

在内存泄漏方面,对New的痴迷是什么?除了通过在将引用变量设置为Nothing后触摸它来分配另一个对象之外,我看不到任何关系

如果你这样做,你可能有一个逻辑错误无论如何。不使用新的只是意味着你会爆炸,而不是我的想法来修复任何东西

最严重的泄漏可能涉及对OLE或GDI例程的API调用,这些调用需要显式清理/释放隐式分配的数据结构


但正如我所说的,将New与内存泄漏联系起来听起来很疯狂。

在内存泄漏方面,对New的痴迷是什么?除了通过在将引用变量设置为Nothing后触摸它来分配另一个对象之外,我看不到任何关系

如果你这样做,你可能有一个逻辑错误无论如何。不使用新的只是意味着你会爆炸,而不是我的想法来修复任何东西

最严重的泄漏可能涉及对OLE或GDI例程的API调用,这些调用需要显式清理/释放隐式分配的数据结构


但正如我所说,将New与内存泄漏关联起来听起来很疯狂。

另一个要点:您可以使用VB.Form实例创建循环引用,无需使用New关键字即可加载。另一个要点:您可以使用VB.Form实例创建循环引用,不用新的关键字就可以加载。我觉得这个问题有点措词不当。我认为这意味着当你不使用对象时,VB6中是否存在内存泄漏的原因,也就是说,除了众所周知的对象循环引用问题之外。我认为这个问题的措辞有点拙劣。我认为这意味着当你不使用对象时,VB6中是否存在内存泄漏的原因,也就是说,除了众所周知的对象循环引用问题之外。这个问题的措辞有点拙劣。我假设您的意思是,当您不使用对象时,VB6中是否可能存在内存泄漏。也就是说,除了众所周知的对象循环引用问题之外,还有其他原因。鲍勃·多伊
我不明白你的意思。你能把这个问题改写一下吗?这个问题措辞有点拙劣。我假设您的意思是,当您不使用对象时,VB6中是否可能存在内存泄漏。也就是说,除了众所周知的对象循环引用问题之外,还有其他原因。鲍勃不明白你的意思。你能把问题改写一下吗?