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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2010, 09:55   #1
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию Утечки памяти.

Код:
//загрузка ресурса по имени в указатель
bool Res::Load( char *bi_name, char **pBin) 
{
//куча кода…
*pBin = new char[head._binaries[i]._dataSize];
fread(*pBin, head._binaries[i]._dataSize,1,fs);
//продолжение кода…	
}
Код вызова этой функции.
Код:
Res r;
char *myBinaryData;

r.Load("ResourceFile", &myBinaryData);
std::cout << myBinaryData << std::endl;
У меня вопрос в связи с этим…
Я так понимаю, что бы не было утечек памяти каждому вызову new char[] должен сопутствовать свой delete[]
но если я ставлю его в код вызова ф-ии появляется ошибка.
Скажите есть ли в данном случае утечка памяти, если да то как ее избежать. Может как-то по другому записывать в указатель?
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Старый 29.11.2010, 07:36   #2
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию

up (10 символов)
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Старый 29.11.2010, 09:49   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Да, в приведенном коде есть утечка памяти. Нужно сделать все просто:
Код:
Res r;
char *myBinaryData;

r.Load("ResourceFile", &myBinaryData);
std::cout << myBinaryData << std::endl;
delete[] myBinaryData;
И неважно, что вы выделили память внутри функции.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.11.2010, 15:01   #4
c++ learner
Пользователь
 
Регистрация: 19.12.2008
Сообщений: 38
По умолчанию

Гром
Благодарствую) попробую... только почему-то мне кажется когда я так делал компилятор ругался почему-то, хотя может я чего-то не писал)
"...в самом начале было слово.." т.е. 16-битное битовое поле.
c++ learner вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти Juffin Общие вопросы Delphi 3 02.11.2010 12:11
утечки памяти в javascript sashonk JavaScript, Ajax 7 20.10.2010 23:03
Достали утечки памяти Порфирий Общие вопросы C/C++ 4 22.12.2009 11:32
Освобождение памяти VadEr Общие вопросы Delphi 2 17.04.2009 22:23
InterBase 7.1 - утечки памяти. pushkin42 БД в Delphi 2 21.03.2007 16:15