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

Ваш аккаунт

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

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

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

farheapwalk

farheapwalk


Функция            Используется для перемещения по глобальному heap
                   от узла к узлу.

Синтаксис          #include<alloc.h>
                   int farheapwalk(struct farheapinfo *hi);

Файл, содержащий   alloc.h
прототип

Описание           farheapwalk подразумевает, что память не запорчена.
                   Для  проверки  перед  использованием   farheapwalk,
                   вызовите  farheapcheck.  При  достижении последнего
                   блока функция  возвращает  _HEAPOK.  При  следующем
                   вызове farheapwalk, она вернет _HEAPEND.

                   farheapwalk получает указатель  на  структуру  типа
                   heapinfo  (определена в файле alloc.h).  При первом
                   вызове farheapwalk  установите  поле  hi.ptr  в  0.
                   farheapwalk  вернет  вам  в этом поле адрес первого
                   блока в heap памяти.  Поле hi.size содержит  размер
                   этого блока в байтах. hi.in_use - это флаг, который
                   устанавливается,  если  этот  блок  используется  в
                   настоящий момент.

Возвращемое        Если нет глобальной динамической области памяти, то
значение           возвращается значение _HEAPEMPTY (1).
                   
                   Если структура heapinfo содержит верные данные,  то
                   возвращается _HEAPOK (2).
                   
                   Если достигнут  конец heap памяти,  то возвращается
                   _HEAPEND (5).

Переносимость      farheapwalk уникальна    для    DOS.   Функция   не
                   совместима с Windows.

Смотрите также     heapwalk.

Пример:

#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   struct farheapinfo hi;
   char far *array[NUM_PTRS];
   int i;
   for(i=0; i<NUM_PTRS; i++)
     array[i] = farmalloc(NUM_BYTES);
   for(i=0; i<NUM_PTRS; i+=2)
     farfree(array[i]);
   hi.ptr = NULL;
   printf("   Размер      Статус   \n");
   printf("   ------      ------   \n");
   while(farheapwalk(&hi) == _HEAROK)
      if(hi.in_use)
          printf("%7u     используется\n",hi.size);
      else
          printf("%7u     свободен\n",hi.size);
   return 0;
}

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

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