CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
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;
}
