Освободите память: Как удалить переменные один раз с ними - VBA VB ACCESS

Как освободить память?

скажем, у меня есть строка

  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.

могу ли я использовать тот же метод для других переменных, т. е. Long, int и т. д.

1 ответов


Я предполагаю, что вы имеете в виду VB6 и VBA, как указано в вашем названии, а не VB.Net, как указано ключевым словом.

в VB6 и VBA потребление памяти строковой переменной состоит из фиксированной части для длины строки и Терминатора и части переменной длины для самого содержимого строки. См.http://www.aivosto.com/vbtips/stringopt2.html#memorylayout для хорошего объяснения этого.

Итак, когда вы устанавливаете строковую переменную в пустая строка или vbNullString, вы будете освобождать переменную часть строки, но не фиксированную часть.

другие типы, такие как long, int, bool и date, потребляют фиксированный объем памяти.

вы не можете "освободить" локальные переменные в VB полностью (подумайте об этом, есть ли какой-либо язык программирования, где вы можете это сделать?), и по большей части вам все равно, потому что сами локальные переменные (фиксированная часть) обычно очень малы.
Только случай Я могу думать о том, где потребление памяти локальных переменных может стать большим, если у вас есть рекурсивные вызовы функций с глубокой рекурсией/широкой рекурсией.