![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
KuvshinoF |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
при release сборке (CONFIG+=release в pro-файле) программа сразу при запуске падает с realloc(): invalid pointer: 0x0000...debug-сборка данной программы работает отлично. В чем тут дело и как исправить? (причем в этом проекте нельзя вручную изменить конфигурацию сборки на выпуск (только отладка), вновь созданный чистый проект работает в release нормально и есть ручной выбор конфигурации сборки)
|
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
обнули указатель перед использованием. некоторые компиляторы их не обнуляют. собственно, по стандарту они и не обязаны.
|
|
|
KuvshinoF |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Понятно...да, может какой-то указатель и не обнулен. А почему в debug-версии это проходит (все работает норм)?
|
|
|
Iron Bug |
![]()
Сообщение
#4
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
скорее всего, в дебаге память может обнуляться для проверок. но в дебаге ещё и распределение адресов другое. может, просто повезло с мусором в памяти и он там нулевой
![]() |
|
|
Алексей1153 |
![]()
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
KuvshinoF |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Да, но новый, "чистый" проект с указателем QWidget * mywidget; в качестве члена QMainwindow и без обнуления отлично работает в release-сборке.
|
|
|
Iron Bug |
![]()
Сообщение
#7
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
смотря как ты используешь этот указатель.
хотя надо заметить, что в многопоточных приложениях иногда падение в каком-то месте ещё не означает, что именно этот оператор его вызвал. там надо смотреть контексты потоков. может быть где-то порушен стек или ещё что-то, что затирает другие данные. |
|
|
KuvshinoF |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Понятно. То есть дело точно в начальном необнулении укателя(ей)?
|
|
|
Алексей1153 |
![]()
Сообщение
#9
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
KuvshinoF, инициализация должна быть, иначе будут сюрпризы. Но дело может быть не только в этом.
Мы же не знаем, что ты там делаешь с указателями |
|
|
KuvshinoF |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 74 Регистрация: 25.7.2013 Пользователь №: 3887 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вроде все указатели в конструкторах занулил, но эффекта это не возымело. А можно как-то локализовать эту ошибку (узнать место программы, из-за которого возникает этот realloc: invalid pointer)?
|
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 5:33 |