Russian Belarusian English German Japanese Ukrainian

Функция


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

Синтаксис


#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.

Пример


#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;
}

Разработка расширений Joomla
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту