Программирование на языке MFC

Мой второй блог в серии программирования

Метод RemoveKey


Метод освобождает всю память, занимаемую хэш-таблицей (но не элементами, на которые указывают указатели в ассоциациях).

Освобождается также и память, которая находится в списке свобод­ных «заготовок», обнуляется число элементов таблицы. Указатели на список свободных блоков (поле m__pBlocks), на список свободных элементов (поле m_pFreel_ist), на хэш-таблицу (поле m_pHashTable) делаются равными NULL. В связи с тем, что память, занимаемая данными, на которые указывают указатели в ассоциациях, не освобождается, ответственность за освобождение памяти лежит на программисте. Однако разница между методами RemoveKey() и Re-moveAII() состоит еще и в следующем. При работе метода Re-moveKeyO мы теоретически можем найти указатель на данные из освобожденной ассоциации. При работе метода RemoveKey() никаким образом не можем восстановить указатели на данные. Деструктор объекта

CMapWordToOb::-CMapWordToOb() {

RemoveAll();

ASSERT(m_nCount == 0);

}

просто вызывает метод RemoveAII(), описанный выше, для того, чтобы освоболить всю память, занимаемую хэш-таблицей.

Итак, уважаемый читатель, мы расмотрели все три организа­ции данных, для работы с которыми MFC предоставляет наборы классов.

Похожие статьи: