![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Gwendolen |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
Ну совсем не понимаю
Пол дня бился с поиском багов в своем классе, но проблему локализовал: main.c
cls.h
В одном случае (локально) на консоль выводит:
т.е. все ОК , а в другом (глобально):
т.е. в каждой процедуре свой адрес переменной... но инициализируется нулем ... П О Ч Е М У ? ? ? Какая разница где объявлен класс. Это что глюк компилятора? P.S. В моем классе на 824 строки адрес не меняется при глобальном объявлении. Добавлено @ 18:06 P.P.S. Компилятор - mingw32-gcc-3.4.2 --------------------
Наносите пользу и причиняйте добро! |
||||||||
|
|||||||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
всё правильно....
при первом вызове DC_VAL значение hnd ничем не проинициализировано... -------------------- СУВ, Partizan. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
В этом месте мог быть просто 0(изначально в памяти). Инициализация может и не проходить.
А какая тебе разница в конструкторе или деструкторе, какой адрес переменной? Приватной к тому же... Ты проверяй, чтобы в функциях она не менялась... А в конструкторе/деструкторе - ну, может быть... Как писал Джефф Элджер(если не ошибаюсь), инициализация глобальных переменных напоминает сложный процесс с пением, танцами с бубном, и мантрами... Я не видел на этот счет никаких гарантий... |
|||
|
||||
| Gwendolen |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 5.4.2005 Репутация: нет Всего: 1 |
Выяснил в чем проблема - Я пытался изменить значение HANDLE hnd в inline функции вне класса (общей для нескольких РАЗНЫХ классов) Ctrl+C & Ctrl+V
во внутрь функции класса и все заработало. Я винил смену aдреса в том, что переменная не "запоминает" присвоенных в inline функции, в виде одного из параметров, значений. Это сообщение отредактировал(а) Gwendolen - 4.12.2006, 20:56 --------------------
Наносите пользу и причиняйте добро! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |