Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TCLR-3Ar.doc
Скачиваний:
14
Добавлен:
12.07.2019
Размер:
664.58 Кб
Скачать

Int heapcheck(void);

Файл, содержащий alloc.h

прототип

Описание heapcheck проходит по памяти и проверяет все

блоки, проверяя указатели, размер и другие важные

параметры. В больших моделях памяти heapcheck

совпадает с farheapcheck.

Возвращемое При ошибке возращется значение < 0, при успешном

значение завершение возвращается значение > 0.

Если нет памяти, то возвращается значение

_HEAPEMPTY (1).

Если память проверена,то возвращается_HEAPOK (2).

Если память запорчена, то возвращается

_HEAPCORRUPT(-1).

Переносимость heapcheck уникальна для DOS.

-236-

Смотрите также farheapcheck.

Пример:

#include<stdio.h>

#include<alloc.h>

#define NUM_PTRS 10

#define NUM_BYTES 16

int main(void)

{

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]);

if(heapcheck() == _HEAPCORRUPT)

printf(" Память запорчена\n");

else

printf("Все нормально\n");

return 0;

}

heapcheckfree

Функция Проверяет свободные блоки памяти на константное

значение.

Синтаксис #include<alloc.h>

int heapcheckfree(unsigned int fillvalue);

Файл, содержащий alloc.h

прототип

Описание ????????????????

Возвращемое При ошибке возращется значение < 0, при успешном

значение завершение возвращается значение > 0.

Если нет памяти, то возвращается значение

_HEAPEMPTY (1).

Если память проверена,то возвращается_HEAPOK (2).

Если память запорчена, то возвращается

_HEAPCORRUPT(-1).

Если зачение заполнения отличается от fillvalue, то

возвращается _BADVALUE (-3).

Переносимость heapcheckfree уникальна для DOS.

Смотрите также farheapcheckfree.

Пример:

#include<mem.h>

#include<stdio.h>

#include<alloc.h>

#define NUM_PTRS 10

-237-

#define NUM_BYTES 16

int main(void)

{

char *array[NUM_PTRS];

int i;

int res;

for(i=0; i<NUM_PTRS; i++)

array[i] = malloc(NUM_BYTES);

for(i=0; i<NUM_PTRS; i+=2)

free(array[i]);

if(heapfillfree(1) < 0)

{

printf(" Память запорчена\n");

return 1;

}

for(i=0; i<NUM_PTRS; i+=2)

memset(array[i],0,NUM_BYTES);

res = heapcheckfree(1);

if(res<0)

switch(res)

{

case _HEAPCORRUPT:

printf(" Память запорчена\n");

return 1;

case _BADVALUE:

printf("Неверное содержимое пустой памяти \n");

return 1;

default:

printf(" Нераспознаваемая ошибка\n");

return 1;

}

printf("Все нормально\n");

return 0;

}

heapchecknode

Функция Ищет и проверяет отдельный узел памяти.

Синтаксис #include<alloc.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]