Главная страница
Навигация по странице:

  • Возвращаемое

  • Переносимость

  • Назначение

  • Справочник по функциям С++. Подпрограммы классификации Подпрограммы преобразования


    Скачать 3.41 Mb.
    НазваниеПодпрограммы классификации Подпрограммы преобразования
    АнкорСправочник по функциям С++.doc
    Дата07.05.2018
    Размер3.41 Mb.
    Формат файлаdoc
    Имя файлаСправочник по функциям С++.doc
    ТипДокументы
    #18992
    КатегорияИнформатика. Вычислительная техника
    страница35 из 120
    1   ...   31   32   33   34   35   36   37   38   ...   120

    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 байт свободно

    -----------------------------------------------------------------
    1   ...   31   32   33   34   35   36   37   38   ...   120


    написать администратору сайта