释放内存:如何删除变量 - VBA VB ACCESS

Pad*_*wan 6 vba

我如何释放记忆?

说我有一个字符串

  Dim TestStri As String
  TestStri = "Test"

  ' What do i have to type up to get rid of the variable?

  ' I know
  TestStri = Nothing
  ' will give it the default value, but the variable is still there.
Run Code Online (Sandbox Code Playgroud)

我可以对其他变量使用相同的方法,例如Long,int等.

GTG*_*GTG 6

我假设您指的是VB6和VBA,如标题所示,而不是VB.Net,如关键字所示.

在VB6和VBA中,字符串变量的内存消耗包括字符串长度的固定部分和终结符以及字符串内容本身的可变长度部分.有关此问题的详细解释,请参见http://www.aivosto.com/vbtips/stringopt2.html#memorylayout.

因此,当您将字符串变量设置为空字符串或vbNullString时,您将释放字符串的可变部分而不是固定部分.

其他类型如long,int,bool和date消耗固定数量的内存.

你不能完全"释放"VB中的局部变量(想到它,是否有任何编程语言可以做到这一点?),而且在大多数情况下,你不关心因为局部变量本身(固定部分)通常非常小.
我能想到的局部变量的内存消耗可能变大的唯一情况是,如果你有递归函数调用具有深度递归/广泛递归.

  • +1但略微纠正:在VBA中,你实际上不能将`String`变量设置为`Nothing`.您只能对对象类型使用"Nothing",而"String"是VBA中的基本类型.`s = vbNullString`是你需要的(来自答案中的aivosto.com链接) (3认同)