|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.08.2011, 10:32 | #11 | ||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
ГДЕ ты в моем посте увидел хоть что-либо касаемое "компонентов" ? Выдумывать небылицы - это смешно. Цитата:
Но ничто в принципе не мешает собрать исп.модуть проекта другим сборщиком, для которого это правило "обнуления" не является обязательным. Последний раз редактировалось mss; 23.08.2011 в 10:38. |
||
23.08.2011, 10:35 | #12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
mss, вы уж извините, но у вас стереотип к слову "компонент".
имеется в виду не VCL-компоненты, а компонент компилятора.(т.е. линкер) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
23.08.2011, 10:44 | #13 | |
Пользователь
Регистрация: 27.07.2011
Сообщений: 71
|
Цитата:
Если объявить статический массив (a: array[0..5] of integer), то при чтении выводит всякую дрянь, а если так Код:
Техника несовершенна: компьютеру, чтобы прийти в себя, нужно три пальца, человеку - всего два!
|
|
23.08.2011, 10:52 | #14 | |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
Цитата:
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
|
23.08.2011, 10:57 | #15 |
Пользователь
Регистрация: 27.07.2011
Сообщений: 71
|
нет, пробовал несколько раз - все время нули
Техника несовершенна: компьютеру, чтобы прийти в себя, нужно три пальца, человеку - всего два!
|
23.08.2011, 11:04 | #16 | |||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Справка: Цитата:
Цитата:
FreePascal - таки, да, говорит "Any assumption that they contain 0 or any other default value is erroneous: They can contain rubbish". Но лично мне тогда не понятно: как же он тогда компилирует Delphi код? Более того, непонятно, как вообще в этом случае могут у него быть глобальные переменные типа дин. массивов и строк? Типа, он создаёт глобальные переменные в... чём? Что у нас есть, что не zero-initialized? Куча менеджера памяти? 0_o А затем затирает нулями только автоматические типы? .... бред какой-то получается.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|||
23.08.2011, 11:07 | #17 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
|
|
23.08.2011, 11:11 | #18 | ||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
В SetLength для дин.массивов:
Код:
Цитата:
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||
23.08.2011, 11:20 | #19 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Вообще-то это не компоновщик делает, а загрузчик ОС.
В Windows глобальные переменные (не инициализированные явно) выделяются в отдельный сегмент. В исполняемый модуль пишется только размер этого сегмента, но не содержимое. А уж при загрузке модуля загрузчик ОС создаёт в памяти процесса блок памяти (zero-initialized) - в нём и будут лежать глобальные переменные. Вот почему глобальные переменные всегда гарантировано равны нулю. Глобальные переменные, которым в коде явно задано инициализирующее значение, идут в сегмент данных, который явно хранится в модуле и при его загрузке проецируется в память процесса. Аналогичные механизмы предусмотрен и в других ОС.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
23.08.2011, 11:24 | #20 | ||
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Видимость ид-ра переменной на уровне проекта в целом и видимость ид-ра переменной в пределах юнита - все же разного уровня "глобальности" вещи. И во избежание недоразумений всегда следует уточнять этот уровень. Но объединяет их одно - время жизни, обусловленное способом резервирования памяти. Цитата:
Завтра Эмаркадеро запросто может развернуть оглобли и в лучшем случае из соображений обратной совместимости сделать дифолтную "обнуляцию" data опциональной. Полагаться на эти гарантии я бы не стал. Тем более если проект заведомо подлежит перспективному портированию, например, в тот же Лазарь. Последний раз редактировалось mss; 23.08.2011 в 11:31. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обьявление глобальной функции | Scorpeon | Общие вопросы Delphi | 3 | 22.04.2010 11:11 |
Обьявление массива | bondik | Общие вопросы C/C++ | 1 | 31.03.2009 19:09 |
обьявление классов | пыхонин филипп | Помощь студентам | 1 | 21.03.2009 20:10 |
var | Черничный | Общие вопросы Delphi | 9 | 25.06.2008 17:10 |
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) | Arkuz | Общие вопросы Delphi | 12 | 25.09.2007 20:47 |