В VB6 я могу использовать строки фиксированной или переменной длины в UDT:
Public Type MyRecord
VariableLengthString As String
FixedLengthString As String * 80
End Type
Я бы ожидал, что FixedLengthString
выделит 160 байтов в UDT, и если бы у меня был массив этихUDT, строковые данные фиксированной длины встроены.
Что происходит с VariableLengthString
?Распределяется ли он в куче?
Поэтому, если я сделаю это:
Dim record1 As MyRecord
Dim record2 As MyRecord
record1.VariableLengthString = "a"
record2 = record1
... очевидно, record2.VariableLengthString
будет "a"
.Но, если я сделаю это:
record2.VariableLengthString = "b"
... тогда какое значение будет record1.VariableLengthString
?
Обновление : получается, что результатstill "a"
, что означает, что строка скопирована.Так разве это не в куче?
Мой тестовый код:
record1.VariableLengthString = "a"
record2 = record1
? record2.VariableLengthString
a
record2.VariableLengthString = "b"
? record1.VariableLengthString
a