在 VB6 中什么时候必须将变量设置为“Nothing”?

2024-04-12

在我的一个 VB6 表单中,我创建了几个其他 Form 对象并将它们存储在成员变量中。

Private m_frm1 as MyForm
Private m_frm2 as MyForm

// Later...
Set m_frm1 = New MyForm
Set m_frm2 = New MyForm

我注意到,每当创建和销毁此(父)表单时,我都会泄漏内存。我是否有必要将这些成员变量分配给Nothing in Form_Unload()?

一般来说,什么时候需要这样做?

已解决:当我执行以下操作时,此特定内存泄漏已修复Unload在有问题的表格上,而不是当我将表格设置为Nothing。我通过将类模块的一些实例显式设置为来消除其他一些内存泄漏Nothing,还有。


实际上VB6实现了RAII http://en.wikipedia.org/wiki/RAII就像 C++ 一样,意味着本地声明的引用会自动设置为Nothing在一个块的末尾。同样,它should执行后自动重置成员类变量Class_Terminate。然而,有几份报告表明这并不可靠。我不记得任何严格的测试,但手动重置成员变量始终是最佳实践。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VB6 中什么时候必须将变量设置为“Nothing”? 的相关文章

  • 用户泄漏、libc++ 泄漏或误报

    我正在使用 clang 编译器和 libc 标准库在 C 11 中的 mac 上构建动态库 当我在链接到动态库的测试代码上运行 valgrind 时 我得到一块肯定丢失的内存 这是 valgrind 报告 45659 36 bytes in
  • vb6 中双精度计算的值不正确

    当在 vb6 中添加 2 个值时 我得到一些奇怪的行为 当在立即窗口中针对不同情况打印变量 sum 双精度型 时 如下所示 我得到的结果为 sum 0 sum 0 sum 0 sum 74 46 0 41 sum 74 87 sum 97
  • 如何忽略 LeakCanary 中的某些类?

    有人能给我一个如何忽略 LeakCanary 中的某些类的有效示例吗 我正在查看这个示例 以忽略 LeakCanary 中第三方库中的某些类 但我不知道将其放在应用程序中的何处 我把它放在我的应用程序类中 但这些变量和方法有错误 isInA
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 使用 Google Cloud Datastore Python 库时应如何调查内存泄漏?

    我有一个使用 Google 数据存储的网络应用程序 在发出足够的请求后内存不足 我已将范围缩小到数据存储查询 下面提供了最低 PoC 稍长的版本 https gist github com edeca 214d7a7c51f84b9c2dc
  • Node.js 进程内存不足错误

    FATAL ERROR CALL AND RETRY 2 Allocation Failed process out of memory 我看到这个错误 但不太确定它来自哪里 我正在从事的项目有以下基本工作流程 从其他来源接收 XML 帖子
  • 在 VB6 中如何处理错误处理程序中的错误?

    我在 VB6 应用程序中经常遇到这种情况 Private Sub DoSomething On Error Goto err1 Call ProcessLargeBatch1 Call ProcessLargeBatch2 more Exi
  • 当您使用 .html() 删除元素时,jQuery 中的事件侦听器是否会自动删除?

    在 jQuery 中如果我们使用 remove 如果要删除某些元素 则与该元素关联的所有绑定事件和 jQuery 数据都将被删除 但是如果我们用以下命令 删除 元素会发生什么 html 我们是否需要在更改任何 html 之前取消绑定所有元素
  • VB6 变体类型

    我有面向对象的背景 为什么在此代码片段中 在消息框中 显示 Test 注意引号 我希望逻辑测试 If Test True 返回 False 因为变体包含布尔值而不是字符串 因此 我不希望出现消息框 但它确实出现了 Dim Test As V
  • 运行 SomeActiveX.Exe /regserver 的 API 等效项

    我需要以编程方式注册 ActiveX exe 而 Shell SomeActiveX Exe regserver 是不够的 有人知道等效的 API 吗 您可以使用DLL注册服务器 http msdn microsoft com en us
  • VB:在 Adob​​e Illustrator、Photoshop 中分配给布尔属性

    在使用 VBA 自动化 Adob e Illustrator CS3 时 我发现分配一个布尔变量 to a 布尔属性结果总是分配 False Dim New Path As Illustrator PathItem Dim v As Boo
  • 为什么永久代空间不断增长?

    我读过几篇文章 我理解以下内容 如果我错了 请纠正我和 或编辑问题 java堆是这样分段的 年轻代 创建的对象放在这里 这部分被频繁且廉价地垃圾收集 老一代 在年轻代的垃圾收集中幸存下来的对象会移到此处 该区域的垃圾收集频率较低 并且使用对
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • 我想在 VB6 程序中使用 VB.NET dll。是否可以?

    我在 VB6 程序中使用 VB NET dll 时遇到问题 我已经使用 GuidAttribute 创建了 dll 使用 RegAsm 创建了 tlb 并将其添加到我的 VB6 程序的引用中 问题是当我尝试使用 CreateObject 函
  • 如何在 VB6 中读取子进程的标准输出?

    在VB6中创建进程时 涉及this https stackoverflow com questions 570295 can i spawn a synchronous process in vb6 and retrieve its ret
  • SwiftUI NavigationLink 内存泄漏

    我有一个关于内存管理在 SwiftUI 的 NavigationView 堆栈中如何工作的问题 我有一个视图 其中声明了 NavigationView 和 NavigationLink NavigationLink 的目标参数内是我的 Te
  • spring-cloud-starter-hystrix 和 spring-cloud-starter-archaius 集成的内存泄漏问题

    我们将 spring cloud starter hystrix 与 spring cloud starter archaius 一起使用 一旦战争取消部署 我们就无法停止 archaius 的 poolingconfigurationSo
  • 小/大 numpy 数组的释放处理方式是否不同?

    我正在尝试调试我的大型 Python 应用程序的内存问题 大部分记忆都在numpy由Python类管理的数组 所以Heapy http guppy pe sourceforge net 等等都是无用的 因为它们不占内存numpy数组 因此
  • Java:BufferedReader 在 close() 上永远挂起,并且 StreamDecoder 不尊重线程中断

    我有一个 Java 程序 它启动一个由 Process 类表示的单独子进程 然后附加查看 Process 的 stdout stderr 的侦听器 在某些情况下 进程将挂起并停止取得进展 此时 TimeLimiter 将抛出 Timeout

随机推荐