

Программирование на языке 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 предоставляет наборы классов.
Похожие статьи: Метод RemoveKey
