Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> delete, чисти память? 
:(
    Опции темы
val
Дата 15.10.2004, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



На всякий случай попробуй повставлять printf(ы) во все твои деструкторы, возможно, кто-то кого-то не вызывает...

И еще, иногда память может реально освободится от старых мапов только если дать новую команду её захватить...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
gepard
Дата 15.10.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Adil' 
Глупости городишь. Ошибка-то при delete получается. Памяти освобождается мало... stena.gif
Короче ладно. Я буду всё равно сейчас структуру переделывать...
Если тажа хрень будет - подниму тему thumbs-up.gif


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
chipset
Дата 15.10.2004, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



В последние четыре поста (кроме Val'иного) не врубился нифига.. stena.gif


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Adil'
Дата 15.10.2004, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 6
Всего: 15



Цитата(chipset @ 15.10.2004, 15:36)
В последние четыре поста (кроме Val'иного) не врубился нифига..
А cвой в эти четыре посчитал? biggrin.gif
Цитата(gepard @ 15.10.2004, 15:15)
Глупости городишь.
Фи, как грубо.
Цитата(gepard @ 15.10.2004, 15:15)
Ошибка-то при delete получается. Памяти освобождается мало...
Если ошибка получается при delete то откуда следует вывод что Памяти освобождается мало???
Такая ошибка обычно вылезает, если delete обращается к "левому" адресу, уже освобожденному, но не обнуленному, например.

Это сообщение отредактировал(а) Adil' - 15.10.2004, 16:04


--------------------
Удачи
PM MAIL WWW   Вверх
Vyacheslav
Дата 15.10.2004, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(gepard @ 15.10.2004, 04:19)
Vyacheslav
Ошибка по типу "отправить отчёт" или "Не отпралвять" hehe.gif
Код вечерком выложу...
Сейчас в ВУЗ надо валить

Ну и терминология.
Если имеется в виду Access Violation, то она как раз должна на delete и наооборот означает то что памяти особождается через чур много biggrin.gif
Ты где-то особождаешь то что еще не выделил или проводишь освобождение по второму разу.



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 16.10.2004, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



gepard
я не знаю, но если юзаешь классы и динамическое выделение/удаление объектов, то все базовые классы должны быть с виртуальными деструкторами:
virtual ~ClassDestructor();


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
gepard
Дата 16.10.2004, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Vyacheslav
У меня в голове все проекты перемешались: ошибка по типу "Отправлять отчёт или нет" вылезает у меня в другом проекте, а в этом просто памяти мало освобождается.
Вот исходник rtfm.gif
Код

typedef float pos3d[3];
typedef float rgba[4];
enum ParticlesType
{
_POINTS,
_BLBSURFACE,
_MODELS
};
class TexturesCls
{
public:
 TexturesCls();

 void     SetTexture(unsigned int min_filter, unsigned int mag_filter);
 bool     LoadTGA(char*);

 bool     layered;
 unsigned int   id;
 unsigned int   data;
 rgba     color;
};
class  Particles
{
public:
 pos3d     gc;
 bool     exist;
 float     dir_speed[3];
 float     dir[3];
 float     spawn_point[3];
 double    life_time;
};
class Particles_Emmiter
{
public:
 Particles_Emmiter();
 void     Particles_Process();
 void     Draw_Particles();
 void     Burn_Particle(unsigned int num);

 unsigned int   particles_pear_fire;
 unsigned int   particles_count;
 float     angel_x;
 float     angel_z;
 float     particles_size;
 float     particles_speed;
 float     delay;
 float     dir[2];
 float     life_time_for_particles;
 double    time_of_last_delay;
 int     dir_angel[2];
 bool     full_angel[2];
 bool     active;
 Particles    particle[1024];
 pos3d     gc;
 ParticlesType   particles_type;
 rgba     color;
};
TexturesCls*     texture;
Particles_Emmiter*    particles_emmiter;
...
texture=new TexturesCls[10];
particles_emmiter=new Particles_Emmiter[10];
...
void somefunction()
{
if (texture)
{
 delete [] texture;
 texture=0;
}
if (particles_emmiter)
{
 delete [] particles_emmiter;
 particles_emmiter=0;
}
}

Функция somefunction() вызывается по нажатию опред. клавиши.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
MaxWave
Дата 8.3.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Люди, спасите помогите!!!

Короче есть игра - змейка. Я создаю раздные доски (та, по к-й движется змея) размером m*n. Есть ф-я, которая загружает доску опр. размера. Юзер щелкае по вариантам, и доски меняются.
В начале ф-ии делаем так:
Код

delete [] massiv;
massiv=new int [n*m];


Это есть типа "2-мерный " массив доски, где в каждую клетку заносится цифра для служебного пользования.

Прожект компилится, запускается, все окей. Причем в Debug компиле никаких проблем (только тормозов больше). Когде делаем Relise, запускается все окей. Но когда начинаем многократно менять доски, т.е вызывать эту ф-ю, то прога вылетает (отправить отчет или нет). В чем может быть дело???

ссылка на змею
http://www.ogre3d.org.ru/download.php?list.6


PM MAIL   Вверх
MAKCim
Дата 8.3.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



gepard
в приведенном коде насколько я вижу нет утечки, с чего ты взял, что она есть?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Nuzur
Дата 9.3.2006, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

Репутация: нет
Всего: 5



Цитата(Adil' @ 15.10.2004, 08:45)
Цитата(gepard @  15.10.2004,  04:19)
Ошибка по типу "отправить отчёт" или "Не отпралвять"

И причем здесь утечка памяти?! Скорее наоборот - "наступил" на не выделенную smile

Угу, из-за утечек ничего тебе не скажут, кроме того что с работы уволят(тьфу, тьфу, тьфу) и поночам спать трудно(если конечно совесть есть).


--------------------
Never again...
PM MAIL   Вверх
Neitron
Дата 9.3.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата(Nuzur @ 9.3.2006, 10:31)
и поночам спать трудно(если конечно совесть есть).

Гы, гы))) Да да....
Утечка мучает всегда и кошмарные сны, когда компьютер орет, на тебя во сне.


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
CPlusPlusFAN
Дата 13.3.2006, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



MaxWave,
Цитата(MaxWave @ 8.3.2006, 20:50 Найти цитируемый пост)
В чем может быть дело???

Попробуй так:
Код

int *massiv=NULL;



if (massiv) delete [] massiv;   
massiv=new int [n*m];

А чего, в конце не удаляешь?

Это сообщение отредактировал(а) CPlusPlusFAN - 13.3.2006, 03:07
PM MAIL ICQ Jabber   Вверх
MaxWave
Дата 13.3.2006, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Код

int *massiv=NULL;

А чем эта лучше?

Не удаляю в конце, т.к
Код

massiv=new int [n*m];


вызывается у меня все время c разными m и n. А перед созданием нового массива надо удалить старый. Скачай с cсылки змею, там есть эта строчка, посмотри, мож че скажешь... (ф-я loadScene).
PM MAIL   Вверх
CPlusPlusFAN
Дата 15.3.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



MaxWave,
Вот это:
Код

int *massiv=NULL;


для этого:
Код

if (massiv) delete [] massiv;


чтобы не удалять того, чего нет.


Цитата(MaxWave @ 13.3.2006, 20:02 Найти цитируемый пост)
Не удаляю в конце

А следовало бы, чтобы massiv у тебя не зависал в памяти. (Удаляй при завершении программы)
PM MAIL ICQ Jabber   Вверх
CPlusPlusFAN
Дата 15.3.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



MaxWave, я скачал: работа выполнена на совесть.
Я видел у тебя несколько таких удалений массива.
Поэтому я бы посоветовал тебе каждый раз, когда что-то удаляешь, проверить на NULL:
вначале
Код

int *massiv=NULL;


затем
Код

if (massiv) {delete[] massiv;
                   massiv=NULL;}//Лишним не будет


а уж потом, когда надо
Код

massiv=new int[n*m];


Я конечно не уверен, но такие ошибки могут быть из-за вмешательства в память. Посмотри, не удаляешь ли ты ещё какой-нибудь указатель...

Последний раз, когда у меня была такая ошибка, я пытался в Виндосе работать с прерываниями...
PM MAIL ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0613 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.