Оператор динамичес
кого выдел
ения
памят
и и постро
ения данны
х
определенного типа.
Синтаксис
Использование
Параметры
size
Размер байтов для выделения.
initializers
Инициализируемые значения для переменной
datatype
Имя типа данных для создания.
count
Точное количество элементов с целью распределения.
Возвращаемое значение
Указатель
типа
datatype
заново выделенн
ых данных.
Описание
Оператор New динамически распределяет
память и формирует указанный тип данных. Для простых типов, как целые числа,
начальное значение может быть предоставлен
о. Для
типов без конструкторов, начальные значения могут быть определены для
каждого поля.
Типы, которые имеют конструкторы могут
иметь свои конструкторы,
также вызыва
емые New.
Если инициализаторы не даны, будет установлен
о
значения по умолчанию для этих типов.
New[] является версией массива оператора New
и выделяет достаточно памяти для указанного количества объектов.
Конструктор по умолчанию для данного типа будет использоваться зада
нные
начальные значения для каждого элемента.
Операторы New и New[]
не мо
гут быть непосредственно использован
ы
с
String (строками),
но работают с Udt
, содержащими строки.
Объекты, созданные с
New должны быть освобождены с
Delete.
Память выделяе
мая с New[] должн
а
быть освобожден
а с
Delete[],
версией массива Delete.
Вы не можете смешивать и сочетать различные версии операторов.
Указание начального значения
Any,
как в new datatype(any) будет выдел
ять
память для типа, но не инициализировать данные. Это действует только на типы
данных, которые не имеют конструкторы.
Указание начального значения
Any,
как в new datatype[count]{any}
будет выдел
ять память для массива, но не
инициализировать данные. Это действует только на типы данных, которые не
имеют конструкторы.
Пример
Type Rational
As Integer numerator, denominator
End Type
Scope
' Создать и инициализировать "rational" и
сохранить его адрес.
Dim p As Rational Ptr = New Rational(3, 4)
Print p->numerator & "/" & p->denominator
' Уничтожить
rational и освободить память (вернуть
обратно в систему).
Delete p
End Scope
Scope
' Выделить память
для 100 integers и сохранить адрес.
Dim p As Integer Ptr = New Integer[100]
' Присвоить
некоторые значения в массив целых чисел.
For i As Integer = 0 To 99
p[i] = i
Next
' Освободите
память всего массива целых
чисел.
Delete[] p
End Scope
Различия диалектов
Отличия от QB
См. также