Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизИнициализация глобальных переменных Найти похожие ветки
← →
Alex_C (2010-03-28 12:09) [0]Я всегда считал, что в дельфи глобальные переменные по умолчанию инициализируются как nil. Что в общем так оно и есть.
Однако сталкнулся с такой проблемой: если запускать мою программу под Линуксом в Wine это не так.
Есть некоторый класс TMyClass - наследник от TThread. Это отдельная нить работы с интернетом. Запускается пользователем по нажатию на кнопку. Перед нажатием я проверяю, не инициализированна ли переменная MyClass:
if not Assigned(MyClass)...
так вот - под виндой все нормально работает, а под Wine при первой же проверке Assigned говорит что переменная уже инициализирована. Выход из положения конечно простой, самому инициализировать переменную
var
MyClass: TMyClass = nil;
но я считал что Дельфи это по умолчанию сама делает. Или я ошибаюсь?
← →
Игорь Шевченко © (2010-03-28 14:04) [1]"Global variables that don"t have an explicit initializer are allocated in the BSS section in the executable. They don"t actually take up any space in the EXE; the BSS section is a special section that the OS allocates and clears to zero. "
Загрузчик в Wine вполне может не обнулять содержимое сегмента BSS
← →
Alex_C (2010-03-30 09:50) [2]Большое спасибо! Теперь все стало ясно!
← →
KSergey © (2010-03-31 11:52) [3]казалось бы, такое мелкое различие...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.067 c