Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Heapwalk

CuBook05

Функция

Используется для перемещения по памяти от узла к узлу.
 
Синтаксис

#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.
 
Пример

#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;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

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