Debug или Release? Вот в чём вопрос...
От: Fluffy Россия  
Дата: 09.03.02 23:09
Оценка:
У меня есть кнопка, на ней я пишу

{
CMyData data = new CMyData(m_notch); // класс данных

...
бла_бла_бла...
...

delete data;
}

В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???
НИФИГА!!!

При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!

Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.

В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...
Заранее благодарен!!! :super:
Re: Debug или Release? Вот в чём вопрос...
От: Алекс Россия http://wise-orm.com
Дата: 10.03.02 07:48
Оценка:
Здравствуйте Fluffy, Вы писали:

F>У меня есть кнопка, на ней я пишу


F>{

F>CMyData data = new CMyData(m_notch); // класс данных

F>...

F>бла_бла_бла...
F>...

F>delete data;

F>}

F>В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???

F>НИФИГА!!!

F>При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!


F>Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.


F>В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...

F>Заранее благодарен!!!

нужен код деструктора
Re[2]: Debug или Release? Вот в чём вопрос...
От: Fluffy Россия  
Дата: 10.03.02 16:40
Оценка:
Здравствуйте Алекс, Вы писали:

А>Здравствуйте Fluffy, Вы писали:


F>>У меня есть кнопка, на ней я пишу


F>>{

F>>CMyData data = new CMyData(m_notch); // класс данных

F>>...

F>>бла_бла_бла...
F>>...

F>>delete data;

F>>}

F>>В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???

F>>НИФИГА!!!

F>>При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!


F>>Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.


F>>В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...

F>>Заранее благодарен!!! :super:

А>нужен код деструктора


// Вот они, родёмые...
CData::CData(int m) : n(m)
{
m_SinData = new double[n];
m_DelData = new double[n];

m_masz = new int[n];
m_masj = new int[n];
}

CData::~CData()
{
delete[] m_masj;
delete[] m_masz;

delete[] m_SinData;
delete[] m_DelData;
}
Re: Debug или Release? Вот в чём вопрос...
От: Кирпа В.А. Украина  
Дата: 11.03.02 07:56
Оценка:
Здравствуйте Fluffy, Вы писали:

F>У меня есть кнопка, на ней я пишу


F>{

F>CMyData data = new CMyData(m_notch); // класс данных

F>...

F>бла_бла_бла...
F>...

F>delete data;

F>}

F>В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???

F>НИФИГА!!!

F>При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!


F>Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.


F>В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...

F>Заранее благодарен!!!

Внимательно проверь не выходишь ли за границы массивов
А вообще пора б тебе твоё приложение поюзать Bound Checkerom
!0xDEAD
Re: Debug или Release? Вот в чём вопрос...
От: Eow  
Дата: 11.03.02 09:05
Оценка:
Здравствуйте Fluffy, Вы писали:

F>У меня есть кнопка, на ней я пишу


F>{

F>CMyData data = new CMyData(m_notch); // класс данных

F>...

F>бла_бла_бла...
F>...

F>delete data;

F>}

F>В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???

F>НИФИГА!!!

F>При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!


F>Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.


F>В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...

F>Заранее благодарен!!! :super:

1. При выполнении операции delete неплохо бы проверить объект на NULL.
Операции со времене в Debug и в Release происходят по разному —
не учитывается переход на летннее время.
Re[2]: Debug или Release? Вот в чём вопрос...
От: Андрей Россия  
Дата: 11.03.02 09:25
Оценка:
Здравствуйте Eow, Вы писали:

Eow>1. При выполнении операции delete неплохо бы проверить объект на NULL.


Интересно, зачем?
Re[3]: Debug или Release? Вот в чём вопрос...
От: Алекс Россия http://wise-orm.com
Дата: 11.03.02 09:35
Оценка:
Здравствуйте Fluffy, Вы писали:

F>Здравствуйте Алекс, Вы писали:


А>>Здравствуйте Fluffy, Вы писали:


F>>>У меня есть кнопка, на ней я пишу


F>>>{

F>>>CMyData data = new CMyData(m_notch); // класс данных

F>>>...

F>>>бла_бла_бла...
F>>>...

F>>>delete data;

F>>>}

F>>>В классе CMyData есть динамические массивы, которые создаются и удаляются в конструкторе и деструкторе. Вроде всё конкретно???

F>>>НИФИГА!!!

F>>>При выполнении инструкции delete data; выскакивает фишка Debug assertion failed!!! Причём выскакивает только в версии Debug, в релизе всё нормально!!!


F>>>Весь фокус в том, что щас я переписал структуру программы. Раньше была идентичная ошибка, но в версии Release, соответственно в дебаге всё прокатывало.


F>>>В чём дело, люди добрые??? Я понимаю, что ситуация очень абстрактная, но хоть намёки на проблему...

F>>>Заранее благодарен!!!

А>>нужен код деструктора


F>// Вот они, родёмые...

F>CData::CData(int m) : n(m)
F>{
F> m_SinData = new double[n];
F> m_DelData = new double[n];

F> m_masz = new int[n];

F> m_masj = new int[n];
F>}

F>CData::~CData()

F>{
F> delete[] m_masj;
F> delete[] m_masz;

F> delete[] m_SinData;

F> delete[] m_DelData;
F>}

Ты, скорее всего, уже удалил где-нибудь эти массивы, или не удалил, но записал в указатели другие значения.
Лучший выход из положения поставить точку останова на деструктор и под отладчиком все проверить!
Re[3]: Debug или Release? Вот в чём вопрос...
От: Saddam Россия http://saddam.narod.ru
Дата: 11.03.02 11:19
Оценка:
Здравствуйте Андрей, Вы писали:

А>Здравствуйте Eow, Вы писали:


Eow>>1. При выполнении операции delete неплохо бы проверить объект на NULL.


А>Интересно, зачем?

У меня был аналогичный случай. Я убрал вызов delete myObject — помогло. Не знаю как и кто, но мой объект кто-то удалял до меня и memory leak не появился. Попробуй так.
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
Re[3]: Debug или Release? Вот в чём вопрос...
От: Saddam Россия http://saddam.narod.ru
Дата: 11.03.02 11:33
Оценка:
Здравствуйте Андрей, Вы писали:

А>Здравствуйте Eow, Вы писали:


Eow>>1. При выполнении операции delete неплохо бы проверить объект на NULL.


А>Интересно, зачем?

У меня такая ситуация лечилась "не удалением" объекта. Мой объект кто-то удалял до меня. Попробуй, если не появится memory leak — все Ок
- Вы знаете — жаль, просто по-человечески жаль Памелу Андерсон, которая никогда не сможет сыграть на баяне...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.