CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
heapwalk
heapwalk
Функция Используется для перемещенмия по памяти от узла к узлу. Синтаксис #include<alloc.h> int heapwalk(struct heapinfo *hi); Файл, содержащий alloc.h прототип Описание heapwalk подразумевает, что память не запорчена. Для проверки, перед использованием heapwalk, вызовите heapcheck. При достижении последнего блока, функция возвращает _HEAPOK. При следующем вызове heapwalk, она вернет _HEAPEND. heapwalk получает указатель на структуру типа heapinfo (определена в файле alloc.h). При первом вызове heapwalk установите поле hi.ptr в 0. farheapwalk вернет вам в этом поле адрес первого блока памяти. Поле hi.size содержит размер этого блока в байтах. hi.in_use - это флаг, который устанавливается, если этот блок используется в настоящий момент. Возвращемое Если нет памяти, то возвращается значение значение _HEAPEMPTY (1). Если hiapinfo содержит допустимые данные, то возвращается _HEAPOK (2). Если достигнут конец памяти, то возвращается _HEAPEND (5). Переносимость heapwalk уникальна для DOS. Функция не совместима с Windows. Смотрите также farheapwalk. Пример: #include<stdio.h> #include<alloc.h> #define NUM_PTRS 10 #define NUM_BYTES 16 int main(void) { struct heapinfo hi; 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]); hi.ptr = NULL; printf(" Размер Статус \n"); printf(" ------ ------ \n"); while(heapwalk(&hi) == _HEAROK) printf(" %7u %s\n",fi.size,hi.in_use ? "используется" : "не используется"); return 0; }