Лабораторная 1. Управление динамической памятью

  1. Разработать модуль функций обработки динамических байтовых массивов (ДБМ). Заголовок модуля:
    {$mode objfpc}
    unit DynArrayUnit;
    
    interface
    
    type
        TDArray=record // структура ДБМ
            count:longword; // кол-во байт в ДБМ
            pa:^byte; // адрес начала памяти, где хранятся данные ДБМ
        end;
        PDArray=^TDArray; // тип указателя на ДБМ
    
    // создает ДБМ, возвращаемое значение - ссылка на созданный ДБМ
    // count - количество элементов в ДБМ
    function  DACreate(count:longword):PDArray;
    
    // уничтожает ДБМ
    // PDA - ссылка на уничтожаемый ДБМ
    // По окончании уничтожения приваивает PDA значение nil
    Procedure DADestroy(var PDA:PDArray);
    
    // возвращет кол-во элементов в ДБМ
    // PDA - ссылка на ДБМ
    function  DALength(PDA:PDArray):longword;
    
    // заносит значение в ДБМ
    // PDA - ссылка на ДБМ
    // index - позиция, куда помещается заносимое значение (индексируется от нуля)
    // data - заносимое значение
    Procedure DASet(PDA:PDArray; index:integer; data:byte);
    
    // возвращает значение из ДБМ
    // PDA - ссылка на ДБМ
    // index - позиция, откуда возвращется значение
    function  DAGet(PDA:PDArray; index:integer):byte;
    
    // Дополнительная функция - изменение размера ДБМ
    Procedure DASetSize(PDA:PDArray; size:longword);
    
    implementation
    
    // Вставить сюда свой код реализации функций и процедур
    
    end.
    
    Скачать код модуля

  2. Используя программу проверки, оценить корректность работы созданных функций.

    Решение для Linux 32bit
    Решение для Linux 64bit