Системное программирование в UNIX средствами Free Pascal

         

Для инициализации массивов данных можно


uses stdio;
function memset(buf:pointer; character:longint; size:longint):pointer;
function memcpy(buf1:pointer; const buf2:pointer; size:longint):pointer;
function memmove(buf1:pointer; const buf2:pointer; size:longint):pointer;
function memcmp(const buf1, buf2:pointer; size:longint):longint;
function memchr(const buf:pointer; character:longint; size:longint):
         pointer;
Для инициализации массивов данных можно использовать процедуру memset, записывающую значения character в первые size байтов массива памяти buf.
Для прямого копирования одного участка памяти в другой можно использовать любую из процедур memcpy или memmove. Обе эти функции перемещают size байт памяти, начиная с адреса buf1 в участок, начинающийся с адреса buf2. Разница между этими двумя функциями состоит в том, что функция memmove гарантирует, что если области источника и адресата копирования buf1 и buf2 перекрываются, то при перемещении данные не будут искажены. Для этого функция memmove вначале копирует сегмент buf2 во временный массив, а затем копирует данные из временного массива в сегмент buf1 (или использует более разумный алгоритм).
Функция memcmp работает аналогично функции strcmp. Если первые size байтов buf1 и buf2 совпадают, то функция memcmp вернет значение 0.
Функция memchr проверяет первые size байтов buf и возвращает либо адрес первого вхождения символа character, либо значение
nil. Процедуры memset, memcpy и memmove в случае успеха возвращают значение первого параметра.

Содержание раздела