![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
![]()
Здравствуйте.
Есть очень большой класс, который содержит много других классов членов. При удалении класса происходит segmentation fault. Отладчик указывает на самую первую строчку деструктора Вот эта первая строка Код:
Karta = new Map; Удаляю класс так delete Karta; Класс после удаления не использую. Два дня мучаюсь, не могу решить проблему. Может быть кто-нибудь знает от чего это может быть? Почему выкидывает на первой строчке деструктора? |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]() Цитата:
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
||
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Печатайте додержимое указателя после создания и перед удалением.
На подозрении два варианта: Либо удаляете память дважды, либо по ходу меняете содержимое указателя, в итоге удаляете другой блок. А кто удаляет сам класс? К нему применимы те же потенциальные проблемы. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
![]()
Существуют ли какие-нибудь программы которые могут помочь найти проблему? Кроме отладчика я ничем не пользовался. Мне когда-то что-то советовали для решения подобных проблем, только не помню что. У меня Ubuntu.
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
valgrind
хотя лучше отладчика еще ничего не придумали. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
![]()
Так отладчик лучше чем valgrind? Если так, то с проблемой я буду мучаться очень долго=(
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
Такие ошибки свидетельствуют о том, что код написан коряво и проблема в архитектуре. Тут уже не отлаживать надо, а переписывать, ибо отловите одну ошибку, а за ней еще десяток всплывёт.
Есть одно простейшее правило: кто создал объект/выделил память, тот за собой и прибирает. В этом случае головняка с памятью будет сильно меньше. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Есть правило еще проще - никогда не работать с памятью напрямую, только через контейнеры или smart указатели.
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
![]()
очевидно же, диструктор падает.
в диструкторе содержится код, который роняет все нафиг. например: последствия нарушения правила "трех". (если в качестве данных членов есть сырые указатели, значит нужен диструктор, конструктор копии, и оператор= ) телепаты в отпуске. |
![]() |
![]() |
![]() |
#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 |