new~
Динамическое выделение памяти и присвоение ссылки.
Синтаксис
p = new~<тип данных>;
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| тип данных | |
Название типа данных |
Описание
Динамическое выделение памяти и присвоение ссылки. Выделенная память должна быть освобождена при помощи функции dispose.
Результат
| Имя | Тип данных | Описание |
|---|---|---|
| p | tcomplex |
Происходит присвоение ссылки и выделение памяти. Интерпретируется скриптовым языком, как комплексная переменная, но при этом само отображаемое значение возвращаемой переменной не имеет смысла. |
Пример 1
p = new~double; //Выделение памяти
~double(p) = 100; //Присвоение
y = ~double(p); //доступ по ссылке
dispose(p); //Освобождение памяти
В процессе выполнения примера по ссылке p на переменную типа
double выделяется память при помощи функции new~. При
помощи функции ~ происходит доступ по ссылке к переменной и приравнивание
ей значения 100. Переменной y присваивается значение 100 по ссылке
p. Перед завершение примера происходит освобождение памяти при помощи
функции dispose.
Пример 2
initialization
//В этом массиве мы будем хранить указатели на матрицы, он должен быть комплексного типа
var ptrs_array: carray;
//Создание
ptrs_array = 100#0;
for(i=1,100) begin
//Вот так мы выделяем память
ptrs_array[i]=new~matrix;
//Присваиваем значение матрицы
~matrix(ptrs_array[i])=[[1,2],[3,1]];
end;
//Чтение - тут мы суммируем детерминанты матриц
summ = 0;
for(i=1,100) begin
dd = det(~matrix(ptrs_array[i]));
summ = summ + dd;
end;
//Уничтожение объектов после того, как мы закончили их использование
for(i=1,100) begin
dispose(ptrs_array[i]);
end;
end;
Пример показывает использование массива указателей на 100 матриц и последующее обращение к каждой из них.
Дополнительные материалы
Нет.