AllocateStructure()
Синтаксис
*Item.StructureName = AllocateStructure(StructureName)
Описание
Динамически создает новый экземпляр структуры (объект, для которого структура используется в качестве типа), и сразу выделяет под него память. Этот экземпляр структуры будет проинициализирован и полностью готов к использованию, без необходимости вызова InitializeStructure(). Для работы с этим экземпляром структуры необходимо использовать указатель, объявленный с данным 'StructureName' в качестве типа.
Параметры
StructureName Имя шаблона структуры, который следует использовать для выполнения инициализации нового экземпляра структуры и объявления указателя. Шаблон структуры должен быть создан заранее.
Возвращаемое значение
Возвращает адрес (Указатель) нового экземпляра структуры, в противном случае 0.
Комментарии
Эта команда предназначена для опытных пользователей и не нужна для большинства программ. Часто лучше использовать структурированный Массив, Связный список или Хеш-карту для хранения динамических структурированных элементов.
Для удаления экземпляра структуры созданного с помощью AllocateStructure() можно использовать команду FreeStructure(), но нельзя удалить такую структуру с помощью связки функций ClearStructure + FreeMemory(). При завершении программы все экземпляры структуры удаляются автоматически.
Если программа даёт сбой при этой команде, это обычно является результатом повреждения данных в памяти программы в более раннее время, например при записи в память за пределами выделенной области памяти. Реальная причина такой ошибки может быть найдена с помощью средства отладчика Пурифаер.
Пример
Structure People ; Создание шаблона структуры. Name$ List Friends$() EndStructure *DynamicPeople.People = AllocateStructure(People) ; Динамическое создание экземпляра структуры, по шаблону структуры. *DynamicPeople\Name$ = "Fred" ; Обращение к полю экземпляра структуры через указатель. AddElement(*DynamicPeople\Friends$()) *DynamicPeople\Friends$() = "Stef" Debug *DynamicPeople\Name$ Debug *DynamicPeople\Friends$() FreeStructure(*DynamicPeople) ; Удаление экземпляра структуры.
См. также
FreeStructure()
Поддерживаемые OS
Все