Russian Qt Forum
Ноябрь 23, 2024, 01:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Неинициализированный указатель  (Прочитано 2548 раз)
OKTA
Гость
« : Апрель 08, 2014, 16:59 »

Пост так, ради интереса. Сегодня очередной раз обнаружил в действии проблему неинициализированных указателей и общей памяти программы.
И так) Забыл в одном месте сделать указатель = NULL - в самом начале. Весь день ваял интерфейс и все работало хорошо, пока не достиг момента, когда вновь созданный виджет начал влиять на этот неинициализированный указатель в месте абсолютно невсвязанном с интерфейсом(не считая общей памяти). И что меня смутило, так это то, что при определенном количестве виджетов все работало и стоит добавить хоть один и программа вылетает  Смеющийся Вот так начнешь разбираться и помрешь, пока разберешься))) Так что всегда инициализируйте указатели!!!  Крутой
Записан
Bepec
Гость
« Ответ #1 : Апрель 08, 2014, 17:03 »

Присоединяюсь. У меня однажды интересно программа работала. После добавления/удаления нескольких падала. И только потом оказалось что указатель не обнулялся. И даже подключение несуществующего плагина почему-то не давало ошибку и даже что-то возвращало Веселый
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #2 : Апрель 08, 2014, 18:53 »

1) QPointer
2) В новом стандарте можно инициализировать переменные в теле класса, даже до списка инициализации в конструкторе, про который часто все забывали

например

Код:
class A
{
  QWidget * pWidget = 0;
public:
  A();
  ~A();
}

Это очень удобно.

А еще подобную фигню с памятью может вызвать процедура, которая должна сделать return Result; но не делает этого в одном из случаев сложного внутреннего условия. Но сейчас вроде всегда ворнинг компилятором выдается при такой опасности.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 23.