CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
heapchecknode
heapchecknode
Функция Ищет и проверяет отдельный узел памяти. Синтаксис #include<alloc.h> int heapchecknode(void *node); Файл, содержащий alloc.h прототип Описание Если узел был освобожден и heapchecknode вызывается с указателем на освобожденный узел, то heapchecknode может вернуть значение _BADNODE, вместо предполагаемого _FREEENTRY. Это происходит потому, что соседние свободные блоки сливаются, и блок, указанный при вызове функции, больше не существует. Возвращемое При ошибке возращется значение < 0, при успешном значение завершение возвращается значение > 0. Если нет памяти, то возвращается значение _HEAPEMPTY (1). Если память запорчена, то возвращается _HEAPCORRUPT(-1). Если узел не найден, то возвращается _BADNODE (-2). Если узел освобожден, то возвращается _FREEENTRY (3). Если узел, это используемый блок, то возвращается _USEDENTRY (4) Переносимость heapcheckfree уникальна для DOS. Функция не совместима с Windows. Смотрите также farheapchecknode. Пример: #include<stdio.h> #include<alloc.h> #define NUM_PTRS 10 #define NUM_BYTES 16 int main(void) { char *array[NUM_PTRS]; int i; for(i=0; i<NUM_PTRS; i++) array[i] = malloc(NUM_BYTES); for(i=0; i<NUM_PTRS; i+=2) free(array[i]); for(i=0; i<NUM_PTRS; i++) { printf("Узел %2d",i); switch(heapchecknode(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; }