q обозначает указатель на тип
q=(тип_q *)farmalloc(n_byte); //запрос памяти в дальней "куче"
q new=realloc(q_old,n_byte); //изменение размера блока
q_new=farrealloc(q_old,n_byte); //изменение размера блока
free(q); //освобождение памяти
farfree(q); //освобождение памяти
В приведенных выше обращениях q обозначает указатель на тип данных элементов массива, заменяющий имя массива. Параметры n_el и s_el задают соответственно количество элементов в массиве и длину каждого элемента в байтах. Параметр n_byte определяет количество запрашиваемых байтов.
Максимальный размер сегмента памяти, предоставляемого в ближней "куче", равен 65 521 байт. Добавка far означает, что программа использует дальние указатели типа far или huge, которые позволяют адресоваться к дальней "куче" и использовать сегменты размером более 64 Кбайт. Любая функция выделения памяти возвращает начальный адрес или "нулевой" указатель (NULL) в случае отсутствия свободной памяти запрашиваемого размера. Для того чтобы нормально работать с предоставленным фрагментом памяти, возвращаемый адрес обязательно должен быть приведен к типу указателя q.
Функция realloc (farreallioc) позволяет перераспределить ранее выделенную память. При этом новый размер массива может быть как меньше предыдущего, так и больше. Если система выделит память в новом месте, то все предыдущие значения, к которым программа обращалась по указателю q_old, будут переписаны на новое место автоматически.
В новых версиях Borland C++ появились две более удобные процедуры для запроса и освобождения памяти, не нуждающиеся в дополнительном указании о приведении типа возвращаемого адреса:
q=new тип[n_е1]; //запрос памяти под массив из n_e1 элементов;
q=new тип; //запрос памяти под скалярную переменную;
delete q[n_e1]; //освобождение памяти, занятой массивом;
delete q; //освобождение памяти, занятой массивом или
//скалярной переменной;.
Для формирования в Паскале динамического массива с элементами определенного типа с таким массивом надо связать соответствующий указатель и обратиться к процедуре New:
Содержание Назад Вперед