Название: Неинициализированный указатель Отправлено: OKTA от Апрель 08, 2014, 16:59 Пост так, ради интереса. Сегодня очередной раз обнаружил в действии проблему неинициализированных указателей и общей памяти программы.
И так) Забыл в одном месте сделать указатель = NULL - в самом начале. Весь день ваял интерфейс и все работало хорошо, пока не достиг момента, когда вновь созданный виджет начал влиять на этот неинициализированный указатель в месте абсолютно невсвязанном с интерфейсом(не считая общей памяти). И что меня смутило, так это то, что при определенном количестве виджетов все работало и стоит добавить хоть один и программа вылетает ;D Вот так начнешь разбираться и помрешь, пока разберешься))) Так что всегда инициализируйте указатели!!! 8) Название: Re: Неинициализированный указатель Отправлено: Bepec от Апрель 08, 2014, 17:03 Присоединяюсь. У меня однажды интересно программа работала. После добавления/удаления нескольких падала. И только потом оказалось что указатель не обнулялся. И даже подключение несуществующего плагина почему-то не давало ошибку и даже что-то возвращало :D
Название: Re: Неинициализированный указатель Отправлено: break от Апрель 08, 2014, 18:53 1) QPointer
2) В новом стандарте можно инициализировать переменные в теле класса, даже до списка инициализации в конструкторе, про который часто все забывали например Код: class A Это очень удобно. А еще подобную фигню с памятью может вызвать процедура, которая должна сделать return Result; но не делает этого в одном из случаев сложного внутреннего условия. Но сейчас вроде всегда ворнинг компилятором выдается при такой опасности. |