Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

farcalloc - farrealloc - работа с дальней кучей

Описание

      farmalloc   - Отводит память размером  size  в дальней
                    куче.
      farcalloc   - Отводит память под массив длиной  number
                    элементов, каждый из которых длиной size
                    байтов, в дальней куче.
      farcoreleft - Возвращает величину памяти в дальней ку-
                    че.
      farfree     - Освобождает блок памяти memblock,  выде-
                    ленный прежде в дальней куче.
      farrealloc  - Переопределяет размер ранее загруженного
                    блока памяти memblock значением newsize.
         Заметим,  что вся доступная память (RAM) может быть
         задействована; может быть выделен блок памяти более
         64 Кб и для  доступа к блокам  памяти  используются
         дальние указатели.
     Эти функции непосредственно обращаются к MS DOS.  Они бо-
  лее медленны, чем, например, malloc. Они могут также предотв-
  ратить переполнение кучи в S, M, T моделях памяти (и полезны
  прежде всего для ее расширения). Указатели на загруженную па-
  мять должны быть освобождены прежде, чем завершится програм-
  ма,  в противном случае память останется занятой до перезаг-
  рузки компьютера.

Использование

      #include <dos.h>
      void far *farmalloc(unsigned long size);
      void far *farcalloc(unsigned long number, unsigned
                                                 long size);
      long farcoreleft(void);
      void farfree(void far *memblock);
      void far *farrealloc(void far *memblock, unsigned long
                                                   newsize);

Возвращаемое значение

      farmalloc   - возвращает дальний указатель на размещен-
                    ный блок памяти или NULL, если нет доста-
                    точного количества памяти.
      farcalloc   - возвращает дальний указатель на загружен-
                    ный блок памяти или NULL, если нет доста-
                    точного количества памяти.
      farcoreleft - возвращает величину памяти в дальней ку-
                    че.
      farfree     - ничего не возвращает.
      farrealloc  - возвращает адрес перезагруженного блока,
                    который может быть отличен от исходного.

Пример

      #include <stdio.h>
      #include <dos.h>
      main()
      {
        char far *memblock;
        long allocate = 65000;
        printf("%lu байтов памяти свободны\n",farcoreleft());
        memblock = farmalloc(allocate);
        if (memblock == NULL)
        {
          printf("не смогли разместить блок памяти\n");
          exit(1);
        }
        printf("%lu байтов отведено", allocate);
        printf("%lu байтов памяти свободно\n",farcoreleft());
        allocate/=2;
        memblock = farrealloc(memblock, allocate);
        printf("память переразмещается до %lu байтов",
                                                  allocate);
        printf("%lu байтов памяти свободно\n",farcoreleft());
        farfree(memblock);
        printf("блок памяти освобожден");
        printf("%lu байтов памяти свободно\n",farcoreleft());
      }

Рекомендация

      Смотрите также calloc, free, malloc, realloc.

оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог