Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог