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