1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
|||||||||||
1 | |||||||||||
Утечка памяти (Expression: _CrtIsValidHeapPointer(pUserData))03.05.2012, 23:52. Показов 14963. Ответов 27
Метки нет (Все метки)
Добрый вечер всем. Столкнулся с такой проблемой. Запускаю программу, открываеться пустая консоль, увеличиваеться употребление оперативной памяти для программы и викидает такую ошибку:
Вот код проекта: .h
0
|
03.05.2012, 23:52 | |
Ответы с готовыми решениями:
27
HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти Вектор, утечка памяти, функция создания и выделение памяти Утечка памяти... Утечка памяти |
04.05.2012, 00:16 | 2 | |||||||||||||||
Особо не вникал, но не вижу смысла в таком коде, как принципе и динамическом выделении памяти Добавлено через 1 минуту
1
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
|
04.05.2012, 01:20 [ТС] | 3 |
0
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
||||||
04.05.2012, 22:32 [ТС] | 6 | |||||
Создал в нем чистый виртуальный деструктор - всеравно утечка памяти происходит.
Пожалуйста, покажите, что не так в программе, а то ничего не выходит.
0
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
|||||||||||
04.05.2012, 23:12 [ТС] | 8 | ||||||||||
Пожалуйста:
.h
0
|
Заблокирован
|
|
04.05.2012, 23:28 | 9 |
жессть вапще....
функция - одна сплошная утечка памяти. Через строчку новая утечка vector<Kotel> Kotel::GetVehiclesFromFile(char* fileName) Добавлено через 2 минуты функция: vector<Route> Route::GetDataFromFile() Диагноз: порча памяти. Добавлено через 1 минуту функция: void Route::SetInformation() Диагноз: порча памяти Добавлено через 1 минуту Дальше не смотрел, ибо ножки тянуццо из порченных функций.
0
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
||||||
05.05.2012, 00:12 [ТС] | 11 | |||||
Вот попробовал сменить char на string, но ничего не выходит. Подскажите синтаксис:
вот одна из функций.
0
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
||||||
05.05.2012, 00:32 [ТС] | 13 | |||||
Спасибо! Сейчас заменю все char на string, посмотрю, что с того выйдет.
Добавлено через 11 минут Раньше fileName был типа char*, теперь - string. Но теперь и strcat не работает. Как исправитть ошибку?
0
|
05.05.2012, 01:51 | 14 | ||||||||||
Забыть про strcat().
std::string-строки можно склеивать с поимощью оператора сложения +
http://www.cplusplus.com/reference/string/string/
1
|
1 / 1 / 2
Регистрация: 06.11.2011
Сообщений: 68
|
|||||||||||
05.05.2012, 02:36 [ТС] | 15 | ||||||||||
Avazart, я сменил в програме все char на string, сделал все исправления по Вашему примеру. Вот коды:
.h
Запустил дебагер, видал вот такую картину. Скорее всего, дело в виртуальном деструкторе. Возможно как-то все-таки запустить программу, чтоб она смогла нормально заработать? P.S. Большое спасибо за то, что помогаете.
0
|
05.05.2012, 05:06 | 16 | |||||||||||||||||||||||||
И если вы не не выделяете память динамически то деструкторы нафиг не нужны потому как освобождать нечего. Добавлено через 4 минуты Хотя я не особо понимаю строки
Это ошибка в строке 190
1
|
Заблокирован
|
|||||||||||
05.05.2012, 21:00 | 17 | ||||||||||
Деструкторы не просто нужны. Они в принципе нужны. Без деструктора вся приплюснутая ОО-архитектура сразу же пойдёт крахом. Этим объясняется тот факт, что если программист сам не укажет деструктор, то за него его автоматически сгенерирует компилятор.
Но есть нюансы: компилятор не всегда способен создать деструктор корректно. Это связано с сложностями парсинга кода на с++. В результате: Смотри:
На месте тестовой болванки может оказаться какой нибудь вектор, или ещё что нибудь этакое. У них не будет вызван деструктор, и они не освободят захваченные ресурсы. И ладно, если это просто утечка памяти, а если там какие то особо важные ресурсы были под контролем? А все потому, что человек поленился один раз написать явный деструктор (пусть даже пустой). /зы: взял себе за правило: всегда писать явный дестурктор, и не иметь проблем.
0
|
Заблокирован
|
||||||||||||||||||||||||||
05.05.2012, 21:31 | 19 | |||||||||||||||||||||||||
С теми двумя тестовыми классами в сферическом вакууме все в полном порядке))
Проблемы начинаются в многофайловом проекте. А если там ещё и иерархия очень развитая - там вообще без 100 грамм потом не разберёшься. Попробуй протестировать вот такую вещь: Предположим, что данный класс - один из многих в большой-большой системе: //CAgent.h
Собственно, попадаем во внутрь интеллектуального указателя:
0
|
05.05.2012, 21:49 | 20 |
Qt Creator под Win7 тоже кстати норм работает предыдущем кодом
0
|
05.05.2012, 21:49 | |
05.05.2012, 21:49 | |
Помогаю со студенческими работами здесь
20
утечка памяти Утечка памяти Утечка памяти Утечка памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |