Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования
Скачать 3.41 Mb.
|
farcoreleft----------------------------------------------------------------- Назначение farcoreleft - определение размера неиспользуемой памяти в куче Синтаксис unsigned long farcoreleft(void); Прототип в alloc.h Замечания farcoreleft возвращает размер неиспользуемой памяти, удаленной (far) кучи за верхним выде- ленным блоком. Программа крохотной модели памяти не может ис- пользовать данную функцию, если она преобразо- ванна в файл с расширением .СОМ . Возвращаемое farcoreleft возвращает общее количество значение оставшейся динамической памяти между верхним распределенным блоком и концом памяти. Переносимость Уникальна для MS-DOS. Смотри также calloc, farcalloc, farfree, malloc Пример Смотри farmalloc ----------------------------------------------------------------- farfree----------------------------------------------------------------- Назначение Освобождение блока из кучи. Синтаксис void farfree(void far *block); Прототип в alloc.h Замечания farfree освобождает блок, ранее распределенный из удаленной (far) кучи. Программа крохотной модели памяти не может ис- пользовать данную функцию, если она преобразо- вана в файл с расширением .СОМ . В малой и средней моделях памяти блоки, разме- щенные посредством farmalloc, не могут быть свобождены с помощью free, а блоки, размещенные посредством malloc, не могут быть освобождены с помощью farfree. В этих моделях две кучи совер- шенно различны. Возвращаемое Нет. значение Переносимость Уникальна для MS-DOS. Смотри также farcalloc, farmalloc Пример Смотри farmalloc ----------------------------------------------------------------- farmalloc----------------------------------------------------------------- Назначение Распределение памяти из удаленной (far) кучи. Синтаксис void far *farmalloc(unsigned long size); Прототип в alloc.h Замечания farmalloc выделяет блок памяти размером size байт из кучи. Отметим, что при выделении из кучи: - может выделяться вся доступная оперативная память; - могут выделяться блоки размером более 64 Кб; - для доступа к распределяемым блокам использу- ются far-указатели. В компактной, большой и огромной моделях памяти данная функция аналогична, хотя и не идентична функции malloc. Данная функция использует пара- метры типа unsigned long, в то время как malloc использует параметры типа unsigned. Программа крохотной модели памяти не может ис- пользовать данную функцию, если она преобразо- ванна в файл с расширением .СОМ . Возвращаемое farmalloc возвращает указатель на выделенный значение блок или NULL, если для нового блока нет доста- точного места. Переносимость Уникальна для MS-DOS. Смотри также farcalloc, farcoreleft, farfree, farrealloc, malloc Пример /* Работа с кучей памяти farcoreleft - дает количество оставшейся памяти farmalloc - распределяет память из кучи farrealloc - выравнивает распределяемый блок в куче farfree - освобождает кучу */ #include #include main() { char far *block; long size = 65000; /* Найти, сколько здесь осталось*/ printf("%lu байт свободно", farcoreleft()); /* Взять часть кучи */ block = farmalloc(size); if (block == NULL) { printf("Невозможно выделить\n"); exit(1); } printf("%lu байт выделено ", size); printf("%lu байт свободно\n", farcoreleft()); /* Перераспределить блок */ size /= 2; block = farrealloc(block, size); printf("блок теперь перераспределен на %lu " " байт,",size); printf("%lu байт свободно\n", farcoreleft()); /* Теперь освободим все */ printf("Освободить блок\n"); farfree(block); printf("Блок освобожден,"); printf("%lu байт свободно\n", farcoreleft()); } /* Конец */ Результат выполнения программы 359616 байт свободно 65000 байт распределено, 294608 байт свободно блок теперь перераспределен на 32500 байт, 262100 байт свободно Освободить блок Блок освобожден, 359616 байт свободно ----------------------------------------------------------------- |