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

Ваш аккаунт

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

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

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

farheapchecknode

farheapchecknode


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

Синтаксис          #include<alloc.h>
                   int farheapchecknode(void *node);

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

Описание
                   Если узел   был   освобожден   и   farheapchecknode
                   вызывается с указателем на освобожденный  узел,  то
                   farheapchecknode  может  вернуть значение _BADNODE,
                   вместо предполагаемого _FREEENTRY.  Это  происходит
                   потому,  что  соседние  свободные блоки сливаются и
                   блок,  указанный  при  вызове  функции,  больше  не
                   существует.

Возвращемое        При ошибке возращется значение < 0, при успешном
значение           завершение возвращается значение > 0.

                   Если нет глобальной динамической области памяти, то
                   возвращается значение _HEAPEMPTY (1).
                   
                   Если память      запорчена,     то     возвращается
                   _HEAPCORRUPT(-1).
                   
                   Если узел не найден, то возвращается _BADNODE (-2).
                   
                   Если узел освобожден,  то  возвращается  _FREEENTRY
                   (3).
                   
                   Если узел,  это используемый блок,  то возвращается
                   _USEDENTRY (4).

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

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

Пример:

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

#define NUM_PTRS    10
#define NUM_BYTES   16

int main(void)
{
   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]);
   for(i=0; i<NUM_PTRS; i++)
   {
      printf("Узел %2d",i);
      switch(farheapchecknode(array[i]))
      {
         case _HEAPEMPTY:
             printf(" Нет памяти\n");
             break;
         case HEAPCORRUPT:
             printf(" Память запорчена\n");
             break;
         case _BADNODE:
             printf(" Неверный узел\n");
             break;
         case _FREEENTRY:
             printf(" Свободный блок\n");
             break;
         case _USEDENTRY:
             printf(" Занятый блок\n");
             break;
         default:
             printf(" Неизвестное возвращаемое значение\n");
             break;
     }
  }
  return 0;
}

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

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