Учись программированию на C++ Builder бесплатно!

Функция


Проверяет свободные блоки памяти на константное значение.

Синтаксис


#include<alloc.h>
int heapcheckfree(unsigned int fillvalue);

Прототип


alloc.h

Описание


Функция heapcheckfree() проверяет заполнена ли свободная область величиной fill (ближнюю кучу).

Возвращаемое значение


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

Если нет памяти, то возвращается значение _HEAPEMPTY (1).
Если память проверена,то возвращается _HEAPOK (2).
Если память запорчена, то возвращается _HEAPCORRUPT(-1).
Если значение заполнения отличается от fillvalue, то возвращается _BADVALUE (-3).

Переносимость


Функция heapcheckfree уникальна для DOS. Функция не совместима с Windows.

Пример


#include<mem.h>
#include<stdio.h>
#include<alloc.h>

#define NUM_PTRS 10
#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;
}

Поиск по сайту