![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Проблема в том, что с помощью new у одного указателя я выделяю порядка 1 мега памяти в процессе программы.Когда я вызываю delete, то чистится памяти только порядка 100-400 кб. Почему? И как мне чистить всю память?
-------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
а она точно не освобождается ( CodeGuard вопит, например )
или это TaskManager показывает? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
gepard
А может в тех обьектах который удаляешь есть какие то свои указатели на области памяти и надо их в деструкторе удалять? --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
тебе выдало сообщение что есть утечка памяти... ????
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| gepard |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Нет
Нет
В одном классе - да, а в другом нет. Значит память, если есть ещё вложенный указатель, из-под него надо отдельно освобождать? Попробуем... -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
||||||
|
|||||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
А для чего по твоему созданы деструктора? --------------------
|
||||
|
|||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Стоп... правильно...я освобождаю...
У меня всё правильно в коде. Я в дестукторе освобождаю память! Лажа в чём-то другом -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
не совсем понятен "нет" на мой вопрос
"нет" относится к части про CodeGuard или к части про TaskManager? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
_hunter
CodeGuard - ??? TaskManager - неа... Кстати, я сейчас позырил ещё раз: нет, это я в другом проекте брал указатель в классе, который являлся указателем(класс). Тут в чём-то другом лажа... -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Короче без кода нифига не понимаю..
--------------------
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
CodeGuard -- в Builder' e следит за утечками
но код бы не помешало увидеть ;) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
CodeGuard не используется, ТaskManager не показывает, тогда откуда данные об утечке?
От Святого Духа? -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Я думаю, что все же брались данные с таскменеджера
Память то освобождается, просто винда не спешит выделенную страницу памяти у приложения отбирать - вдруг сейчас опять попросят |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Vyacheslav
Ошибка по типу "отправить отчёт" или "Не отпралвять" Код вечерком выложу... Сейчас в ВУЗ надо валить -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
И причем здесь утечка памяти?! Скорее наоборот - "наступил" на не выделенную -------------------- Удачи |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
На всякий случай попробуй повставлять printf(ы) во все твои деструкторы, возможно, кто-то кого-то не вызывает...
И еще, иногда память может реально освободится от старых мапов только если дать новую команду её захватить... -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Adil'
Глупости городишь. Ошибка-то при delete получается. Памяти освобождается мало... Короче ладно. Я буду всё равно сейчас структуру переделывать... Если тажа хрень будет - подниму тему -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
В последние четыре поста (кроме Val'иного) не врубился нифига..
--------------------
|
|||
|
||||
| Adil' |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
Такая ошибка обычно вылезает, если delete обращается к "левому" адресу, уже освобожденному, но не обнуленному, например. Это сообщение отредактировал(а) Adil' - 15.10.2004, 16:04 -------------------- Удачи |
||||||
|
|||||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Ну и терминология. Если имеется в виду Access Violation, то она как раз должна на delete и наооборот означает то что памяти особождается через чур много Ты где-то особождаешь то что еще не выделил или проводишь освобождение по второму разу. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
gepard
я не знаю, но если юзаешь классы и динамическое выделение/удаление объектов, то все базовые классы должны быть с виртуальными деструкторами: virtual ~ClassDestructor(); |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
Vyacheslav
У меня в голове все проекты перемешались: ошибка по типу "Отправлять отчёт или нет" вылезает у меня в другом проекте, а в этом просто памяти мало освобождается. Вот исходник
Функция somefunction() вызывается по нажатию опред. клавиши. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
| MaxWave |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
Люди, спасите помогите!!!
Короче есть игра - змейка. Я создаю раздные доски (та, по к-й движется змея) размером m*n. Есть ф-я, которая загружает доску опр. размера. Юзер щелкае по вариантам, и доски меняются. В начале ф-ии делаем так:
Это есть типа "2-мерный " массив доски, где в каждую клетку заносится цифра для служебного пользования. Прожект компилится, запускается, все окей. Причем в Debug компиле никаких проблем (только тормозов больше). Когде делаем Relise, запускается все окей. Но когда начинаем многократно менять доски, т.е вызывать эту ф-ю, то прога вылетает (отправить отчет или нет). В чем может быть дело??? ссылка на змею http://www.ogre3d.org.ru/download.php?list.6 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
gepard
в приведенном коде насколько я вижу нет утечки, с чего ты взял, что она есть? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Nuzur |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 4.7.2004 Репутация: нет Всего: 5 |
Угу, из-за утечек ничего тебе не скажут, кроме того что с работы уволят(тьфу, тьфу, тьфу) и поночам спать трудно(если конечно совесть есть). -------------------- Never again... |
||||
|
|||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
Гы, гы))) Да да.... Утечка мучает всегда и кошмарные сны, когда компьютер орет, на тебя во сне. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
||||
|
||||
| MaxWave |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 8.3.2006 Репутация: нет Всего: нет |
А чем эта лучше? Не удаляю в конце, т.к
вызывается у меня все время c разными m и n. А перед созданием нового массива надо удалить старый. Скачай с cсылки змею, там есть эта строчка, посмотри, мож че скажешь... (ф-я loadScene). |
||||
|
|||||
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
||||
|
||||
| CPlusPlusFAN |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
MaxWave, я скачал: работа выполнена на совесть.
Я видел у тебя несколько таких удалений массива. Поэтому я бы посоветовал тебе каждый раз, когда что-то удаляешь, проверить на NULL: вначале
затем
а уж потом, когда надо
Я конечно не уверен, но такие ошибки могут быть из-за вмешательства в память. Посмотри, не удаляешь ли ты ещё какой-нибудь указатель... Последний раз, когда у меня была такая ошибка, я пытался в Виндосе работать с прерываниями... |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |