Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2015, 14:17   #1
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию Объясните пожалуйста код

Код:
void CLibScanner::ClearFunction()
{
	for(FUNCTION_LIST::iterator it = m_funs.begin();it!=m_funs.end();++it)
	{
		PFUNCTION_SYMBOL pFun= *it;
		delete []pFun->FunRawData;
		delete  []((BYTE*)pFun);
	}
	m_funs.clear();
}
Dimka-novitsek вне форума Ответить с цитированием
Старый 22.06.2015, 17:38   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Код:
void CLibScanner::ClearFunction()
{
	for(FUNCTION_LIST::iterator it = m_funs.begin();it!=m_funs.end();++it)
	{
		PFUNCTION_SYMBOL pFun= *it;
		delete []pFun->FunRawData;
		delete  []((BYTE*)pFun);
	}
	m_funs.clear();
}
Скорее всего, FUNCTION_LIST - это typedef-name какого-то контейнера, содержащего элементы типа PFUNCTION_SYMBOL, а m_funs - объект типа FUNCTION_LIST, например:
Код:
//...
typedef std::list<PFUNCTION_SYMBOL> FUNCTION_LIST ;
//...
FUNCTION_LIST m_funs ;
//...
PFUNCTION_SYMBOL, судя по коду, представляет собой указатель на объект некой структуры(FUNCTION_SYMBOL), в которой, как минимум FunRawData - указатель на динамически выделенную память.
Сами элементы в контейнере так же выделены динамически, причем выделены как тип (BYTE*) (возможно, используется своя схема управления памятью, или используются pod-типы тут надо смотреть в остальной код).

Значит в цикле проходим по всем элементам этого контейнера.

Код:
PFUNCTION_SYMBOL pFun= *it; //Создаем временный объект для хранения значения (не понятно зачем, скорее всего просто для большего удобства).
delete []pFun->FunRawData; //Освобождаем память, в которую пялится FunRawData
delete  []((BYTE*)pFun); //Освобождаем память выделенную под сам объект (FUNCTION_SYMBOL)
Далее, после цикла, когда "вся ненужная память освобождена"
Код:
m_funs.clear();//Очищаем контейнер от указателей

Последний раз редактировалось Croessmah; 22.06.2015 в 17:41.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните, что делает этот код и напишите, пожалуйста, несколько комментариев narekkg Помощь студентам 0 12.06.2015 18:07
Объясните код der90 PHP 1 26.03.2014 16:52
Объясните код tinton Помощь студентам 7 10.05.2012 21:05
объясните код spydark91 Общие вопросы Delphi 2 18.07.2011 19:30