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"); }