不包含关键字“新建”的VB6程序会有内存泄漏吗?
如果有,请举个例子。
发布于 2009-03-24 08:49:32
总结到目前为止的答案:调用另一个组件可能会导致内存泄漏。该组件可能有buggy,也可能是您误用了它。组件可以是OCX或DLL (包括对Windows DLL的API调用,这是泄漏内存和windows资源的绝佳方法,更不用说许多其他令人兴奋的问题了)。
还有一个需要注意的地方:您可以使用CreateObject创建对象,因此您可以在不使用New的情况下通过circular references泄漏内存。onedaywhen在评论中指出,您还可以在不使用New的情况下使用表单变量创建循环引用。但我认为问题的关键在于,除了循环引用之外,VB6内存泄漏是否还有其他原因。
递归的answer不会导致内存泄漏-引用计数将在每次执行循环时清理内存-请参阅我对答案的评论。
发布于 2009-03-23 17:04:17
您可能正在调用有内存泄漏的第三方DLL。
发布于 2009-03-23 17:04:29
是的,有可能。在我了解特定Windows API调用中的内存泄漏之前,我编写的一个使用透明Blit的VB6程序显示了内存泄漏。因此,尽管泄漏不是在程序本身,而是在VB6在Win32应用程序接口中调用的一个函数中。
https://stackoverflow.com/questions/674247
复制相似问题