CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
movedata
MOVEDATA
#include <memory.h> Требуется только для об-
#include <string.h> явления функции, использует
либо <string.h>, либо
<memory.h>
void movedata (srcseg, srcoff, destseg, destoff,
nbytes);
int srcseg; адрес исходного сегмента
int srcoff; смещение исходного сегмента
int destseg; адрес результирующего сегмента
int destoff; смещение результирующего сег-
мента
unsigned nbytes; количество байтов
Описание.
Функция movedata копирует nbytes байтов, начиная с исходно-
го адреса, обозначенного srcseg:srcoff, в адрес результата, обоз-
наченный destseg:destoff. Функция movedata предназначена для пе-
ресылки far-данных в программах малых или средних моделей, где
адреса сегментов данных не известны. В программах больших моделей
может быть использована функция memcpy, когда адреса сегментов
известны.
Возвращаемое значение.
Возвращаемого значения нет.
См. также memcpy, segread, FP_SEG.
Замечание! Значения сегментов для аргументов srcseg и
destseg могут быть получены с помощью применения либо функции
segread, либо макроопределения FR_SEG.
Функция movedata не обрабатывает все случаи пересылок с пе-
рекрытием корректно (пересылки с перекрытием происходят тогда,
когда часть результирующего поля является в этой же области памя-
ти частью исходного). Пересылки с перекрытием корректно обрабаты-
ваются функцией memcpy.
Пример:
#include <memory.h>
#include <dos.h>
char far *src;
char far *dest;
.
.
.
/* следующие операторы пересылают 512
** байтов данных из src в dest. */
movedata (FP_SEG (src), FPSEG(dest),
FP_OFF(dest), 512);
_ MSIZE
#include <malloc.h> требуется только для объявления
функции
unsigned_msize(ptr);
char *ptr; указатель на блок памяти
Описание.
Функция _ msize возвращает размер блока памяти (в байтах),
распределенного посредством вызовов calloc, malloc или realloc.
Возвращаемое значение.
Величина в байтах возвращается как беззнаковое целое.
См. также calloc, _expand, malloc, realloc.
Пример:
#include <stdio.h>
#include <malloc.h>
main()
{
long *oldptr;
unsigned int newsize=64000;
oldptr=(long*)malloc(10000*sizeof(long));
printf("Size of memory block pointed to by
oldptr=%u\n", _msize(oldptr));
if (_expand(oldptr,newsize) != NULL)
printf("expand was able to increase block to
%u\n", _msize(oldptr));
else
printf("expand was able to increase block to
only %u\n", _msize(oldptr));
}
_NFREE
#include <malloc.h> требуется только для объявления
функции
void _nfree(ptr);
char near *ptr; указатель на захваченный блок
памяти
Описание.
Функция _nfree освобождает блок памяти. Аргумент ptr указы-
вает на ранее захваченный блок памяти посредством _nmalloc.
Числом освобожденных байтов является число байтов, опреде-
ленных при захвате блока. После вызова освободившиеся блоки при-
годны к размещению.
Возвращаемое значение.
Возвращаемого значения нет.
См. также _nmalloc, free, malloc.
Замечание. Попытка освободить неверный ptr (указатель не
захватывается посредством _nmalloc) может привести к последующему
захвату и вызвать ошибку.
Пример:
#include <malloc.h>
#include <stdio.h>
char near *alloc;
/* захватывает 100 байтов и затем освобождает их */
/* проверяет указатель на правильность: */
if ((alloc=_nmalloc(100))==NULL)
printf("unable to allocate memory\n");
else {
.
.
.
/* освобождает память для heap: */
_nfree(alloc);
}
_NMALLOC
#include <malloc.h> требуется только для объявления
функции
char near *_nmalloc(size);
unsigned size; количество байтов в захваченном
блоке
Описание.
Функция _nmalloc внутри умалчиваемого сегмента данных зах-
ватывает блок памяти, по крайней мере не меньше, чем из size бай-
тов. (Блок может быть больше, чем из size байтов,но принадлежащих
пространству, которое требуется для выравнивания).
Возвращаемое значение.
Функция _nmalloc возвращает near-указатель на char. В памя-
ти, на которую указывает возвращаемое значение, гарантировано вы-
равнивание для хранения любого типа объекта. Чтобы получить ука-
затель на тип, отличный от char, используется преобразователь ти-
па возвращаемого значения.
Возвращается значение NULL, если пространство не было зах-
ваченным.
См. также _nrfee, _msize, malloc, realloc.
Пример:
#include <malloc.h>
int *intarray;
/* захватывает память для 20 целых */
intarray=(int*)_nmalloc(20*sizeof(int));
_NMSIZE
#include <malloc.h> требуется только для объявления
функции
unsigned _nmsize(ptr);
char near ptr; указатель на блок памяти
Описание.
Функция _nmsize возвращает размер блока памяти в байтах,
захваченного посредством _nmalloc.
Возвращаемое значение.
Функция _nmsize возвращает размер в байтах, как беззнаковое
целое.
См. также _ffree, _fmalloc, _fmsize, malloc, _msize,
_nfree, _nmalloc.
Пример:
#include <malloc.h>
#include <stdio.h>
main()
{
char near *stringarray;
stringarray=_nmalloc(200*sizeof(char));
if (stringarray != NULL)
printf("%u bytes allocated\n",
_nmsize(stringarray));
else
printf("Allocation request failed.\n");
}
