![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: нет Всего: 1 |
Привет всем!
Разъясните пожалуйста ситуацию! не пойму где трабл. есть класс в нем статик указатель, чтобы любой объект этого класса мог к нему обратиться. инициализируется как 0. и есть две статик функции ода создает объект по new и запоминает в статик указателе вторая удаляет объект по статик указателю, зануляет его после удаления, как я понимаю, код бунтует по страшному! везде, совершенно рандомно, возникают эксепшены по поводу new\delete. подскажите в чем дело! не пойму где закралась ошибка Спасибо! Вот для наглядности
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
везде это где? возникает ли экзепшн в заголовочном файле windows.h на 18-ой строке? и слова
мне совершенно ни о чем не говорят. Добавлено через 40 секунд вот давай пример для наглядности и обсудим, где конкретно здесь вылетает экзепшн и когда? |
||||
|
|||||
| Emura |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: нет Всего: 1 |
azesmcar
везде это по всему коду, где идет работа с памятью. теперь еще выяснил что только на освобождении.
нет. пока только в free.c (строка 110 и не только)
в том и дело что там не вылетает, а вылетает при освобождении памяти причем в случайных местах по коду где эта память очищается Это сообщение отредактировал(а) Emura - 29.4.2010, 15:37 |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Emura
а как вызываешь? покажи рабочий код, который запускаешь и при удалении вылетает. |
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: нет Всего: 1 |
azesmcar
код многотысячен что усложняет ситуацию.... попробую конечно сформировать код который вызывает ошибку, но не факт. там слишком много взаимосвязей. Это сообщение отредактировал(а) Emura - 29.4.2010, 16:06 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
а как я могу чем-то помочь, если не вижу кода? там может быть что угодно, к примеру в совсем другом участке кода мог попортить что-то, выйти за пределы массива..мало ли что. |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
show - потенциально опасна (возможна утечка памяти). Проверяй указатель, перед созданием нового объекта. Но это врядли могло привести к падению
|
|||
|
||||
| Emura |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.2.2009 Репутация: нет Всего: 1 |
Sartorius,
да, в реальном коде там проверки. да и show тоже 1 раз выполняется. |
|||
|
||||
| AndreyK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Ошибки при освобождении памяти (по личному опыту) возникают, когда при освобождении запорчена структура памяти освобождаемого куска.
Т.е. нормальный кусок памяти выглядит как: FDFDFDFD CDCDCDCDCDCDCD ... FDFDFDFD - это заголовок CDCD ... - это неинициализированное содержание - туда потом записываются данные. Так вот если при освобождении менеджер памяти обнаруживает разрушение заголовка (FDFDFDFD), вот тогда и возникает ошибка памяти. Значит искать её надо так: при первом выделении памяти (которая потом должна запортится) заметить адрес и в режиме дебагера следить за заголовком - в каком месте он будет испорчен. Или поставить точку прерывания на обращение к этому участку памяти (если дебагер позволяет). |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |