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