crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> realloc при release сборке
KuvshinoF
  опции профиля:
сообщение 23.3.2021, 13:31
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


при release сборке (CONFIG+=release в pro-файле) программа сразу при запуске падает с realloc(): invalid pointer: 0x0000...debug-сборка данной программы работает отлично. В чем тут дело и как исправить? (причем в этом проекте нельзя вручную изменить конфигурацию сборки на выпуск (только отладка), вновь созданный чистый проект работает в release нормально и есть ручной выбор конфигурации сборки)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 23.3.2021, 17:30
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


обнули указатель перед использованием. некоторые компиляторы их не обнуляют. собственно, по стандарту они и не обязаны.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KuvshinoF
  опции профиля:
сообщение 23.3.2021, 21:36
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


Понятно...да, может какой-то указатель и не обнулен. А почему в debug-версии это проходит (все работает норм)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 24.3.2021, 6:46
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


скорее всего, в дебаге память может обнуляться для проверок. но в дебаге ещё и распределение адресов другое. может, просто повезло с мусором в памяти и он там нулевой :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 24.3.2021, 6:53
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(KuvshinoF @ 23.3.2021, 15:31) *
debug-сборка данной программы работает отлично

- я бы сказал, что работает случайно ))

натрави на проект статический анализатор, он много интересного найти может
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KuvshinoF
  опции профиля:
сообщение 25.3.2021, 8:25
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да, но новый, "чистый" проект с указателем QWidget * mywidget; в качестве члена QMainwindow и без обнуления отлично работает в release-сборке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 25.3.2021, 14:45
Сообщение #7


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


смотря как ты используешь этот указатель.

хотя надо заметить, что в многопоточных приложениях иногда падение в каком-то месте ещё не означает, что именно этот оператор его вызвал. там надо смотреть контексты потоков. может быть где-то порушен стек или ещё что-то, что затирает другие данные.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KuvshinoF
  опции профиля:
сообщение 25.3.2021, 15:12
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


Понятно. То есть дело точно в начальном необнулении укателя(ей)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.3.2021, 18:24
Сообщение #9


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


KuvshinoF, инициализация должна быть, иначе будут сюрпризы. Но дело может быть не только в этом.
Мы же не знаем, что ты там делаешь с указателями
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
KuvshinoF
  опции профиля:
сообщение 1.4.2021, 10:09
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 74
Регистрация: 25.7.2013
Пользователь №: 3887

Спасибо сказали: 0 раз(а)




Репутация:   0  


Вроде все указатели в конструкторах занулил, но эффекта это не возымело. А можно как-то локализовать эту ошибку (узнать место программы, из-за которого возникает этот realloc: invalid pointer)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 2:26