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

Int heapchecknode(void *node);

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

прототип

Описание Если узел был освобожден и heapchecknode вызы-

вается с указателем на освобожденный узел, то

heapchecknode может вернуть значение _BADNODE,

вместо предполагаемого _FREEENTRY. Это происходит

потому, что соседние свободные блоки сливаются, и

блок, указанный при вызове функции, больше не су-

ществует.

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

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

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

_HEAPEMPTY (1).

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

_HEAPCORRUPT(-1).

-238-

Если узел не найден, то возвращается _BADNODE (-2).

Если узел освобожден, то возвращается _FREEENTRY

(3).

Если узел, это используемый блок, то возвращается

_USEDENTRY (4)

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

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

Пример:

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

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

{

printf("Узел %2d",i);

switch(heapchecknode(array[i]))

{

case _HEAPEMPTY:

printf(" Нет памяти\n");

break;

case HEAPCORRUPT:

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

break;

case _BADNODE:

printf(" Неверный узел\n");

break;

case _FREEENTRY:

printf(" Свободный блок\n");

break;

case _USEDENTRY:

printf(" Занятый блок\n");

break;

default:

printf(" Неизвестное возвращаемое значение\n");

break;

}

}

return 0;

}

heapfillfree

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

значением.

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

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