|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.08.2015, 13:06 | #1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
При удалении класса происходит segmentation fault
Здравствуйте.
Есть очень большой класс, который содержит много других классов членов. При удалении класса происходит segmentation fault. Отладчик указывает на самую первую строчку деструктора Вот эта первая строка Код:
Karta = new Map; Удаляю класс так delete Karta; Класс после удаления не использую. Два дня мучаюсь, не могу решить проблему. Может быть кто-нибудь знает от чего это может быть? Почему выкидывает на первой строчке деструктора? |
13.08.2015, 13:14 | #2 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
||
13.08.2015, 13:30 | #3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Печатайте додержимое указателя после создания и перед удалением.
На подозрении два варианта: Либо удаляете память дважды, либо по ходу меняете содержимое указателя, в итоге удаляете другой блок. А кто удаляет сам класс? К нему применимы те же потенциальные проблемы. |
13.08.2015, 16:35 | #4 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Существуют ли какие-нибудь программы которые могут помочь найти проблему? Кроме отладчика я ничем не пользовался. Мне когда-то что-то советовали для решения подобных проблем, только не помню что. У меня Ubuntu.
|
13.08.2015, 17:01 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
valgrind
хотя лучше отладчика еще ничего не придумали. |
13.08.2015, 18:23 | #6 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Так отладчик лучше чем valgrind? Если так, то с проблемой я буду мучаться очень долго=(
|
13.08.2015, 20:57 | #7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Такие ошибки свидетельствуют о том, что код написан коряво и проблема в архитектуре. Тут уже не отлаживать надо, а переписывать, ибо отловите одну ошибку, а за ней еще десяток всплывёт.
Есть одно простейшее правило: кто создал объект/выделил память, тот за собой и прибирает. В этом случае головняка с памятью будет сильно меньше. |
13.08.2015, 21:41 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Есть правило еще проще - никогда не работать с памятью напрямую, только через контейнеры или smart указатели.
|
14.08.2015, 00:13 | #9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
очевидно же, диструктор падает.
в диструкторе содержится код, который роняет все нафиг. например: последствия нарушения правила "трех". (если в качестве данных членов есть сырые указатели, значит нужен диструктор, конструктор копии, и оператор= ) телепаты в отпуске. |
14.08.2015, 04:44 | #10 | |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ vector segmentation fault | Misa | Помощь студентам | 4 | 08.01.2015 19:02 |
Segmentation fault | Hemul | Общие вопросы C/C++ | 7 | 16.08.2011 03:23 |
Vector, Pair и segmentation fault | certman | Общие вопросы C/C++ | 3 | 25.03.2010 00:24 |
QT4 segmentation fault | jojahti | Qt и кроссплатформенное программирование С/С++ | 6 | 06.01.2010 09:57 |
GCL и segmentation fault. | jojahti | Свободное общение | 0 | 14.09.2009 19:20 |