LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

Глобальные и статические переменные стандартом 89/99 принудительно индустриализуются как 0 ибо хранятся они в .bss в .data загруженного исполняемого файла, а не в стеке или куче. Переменные с автоматическим скором жизни (на стеке) будучи неопределенны явно имеют неопределённое значение (просто мусор который в ячейке памяти лежал до её взятия).

Исходя из этого и того что .bss и .data о которых ты в целом вообще знать не должен и тебе глубоко должно быть на них по баробану могут быть отредактированы и вообще.

Тупо инициализируй всегда и всё. Исключение это данные которые ты будешь целиком заполнять, их просто нет смысла сначала записывать нулями, а затем чем-то ещё.

Но в целом, инициализируй всё и всегда. Так ты обеспечишь как минимум корректность на уровне данных. И уже потом можно будет (всегда можно) выкинуть многие бесполезные инициализации.

Я долгое время свято верил что всё выделяемое на стеке всегда равно нулям. Не знаю почему =)

Если при любом раскладе возникают сомнения (не это случай только, а вообще) рожай в голове мысль на время Всё что не явно то UB порой надеешься на что-то, а оно не то, компилёр с причудами, флаги какие или ещё что. Потом эту мысль можно выкинуть. Но если что сразу про неё вспоминать и делать правки в поиске истины следуя за этой мыслью неуклонно.

Сам не умею ничего вот и учу =)

Чем больше сишников тем лучше. Учи учи и не сдавайсо!

Исправление LINUX-ORG-RU, :

Глобальные и статические переменные стандартом 89/99 принудительно индустриализуются как 0 ибо хранятся они в .bss в .data загруженного исполняемого файла, а не в стеке или куче. Переменные с автоматическим скором жизни (на стеке) будучи неопределенны явно имеют неопределённое значение (просто мусор который в ячейке памяти лежал до её взятия).

Исходя из этого и того что .bss и .data о которых ты в целом вообще знать не должен и тебе глубоко должно быть на них по баробану могут быть отредактированы и вообще.

Тупо инициализируй всегда и всё. Исключение это данные которые ты будешь целиком заполнять, их просто нет смысла сначала записывать нулями, а затем чем-то ещё.

Но в целом, инициализируй всё и всегда. Так ты обеспечишь как минимум корректность на уровне данных. И уже потом можно будет (всегда можно) выкинуть многие бесполезные инициализации.

Я долгое время свято верил что всё выделяемое на стеке всегда равно нулям. Не знаю почему =)

Если при любом раскладе возникают сомнения (не это случай только, а вообще) рожай в голове мысль на время Всё что не явно то UB порой надеешься на что-то, а оно не то, компилёр с причудами, флаги какие или ещё что. Потом эту мысль можно выкинуть. Но если что сразу про неё вспоминать и делать правки в поиске истины следуя за этой мыслью неуклонно.

Сам не умею ничего вот и учу =)

Исходная версия LINUX-ORG-RU, :

Глобальные и статические переменные стандартом 89/99 принудительно индустриализуются как 0 ибо хранятся они в .bss в .data загруженного исполняемого файла, а не в стеке или куче. Их инициализация происходит во время компиляции программы, а не исполнения. Переменные с автоматическим скором жизни (на стеке) будучи неопределенны явно имеют неопределённое значение (просто мусор который в ячейке памяти лежал до её взятия).

Исходя из этого и того что .bss и .data о которых ты в целом вообще знать не должен и тебе глубоко должно быть на них по баробану могут быть отредактированы и вообще.

Тупо инициализируй всегда и всё. Исключение это данные которые ты будешь целиком заполнять, их просто нет смысла сначала записывать нулями, а затем чем-то ещё.

Но в целом, инициализируй всё и всегда. Так ты обеспечишь как минимум корректность на уровне данных. И уже потом можно будет (всегда можно) выкинуть многие бесполезные инициализации.

Я долгое время свято верил что всё выделяемое на стеке всегда равно нулям. Не знаю почему =)

Если при любом раскладе возникают сомнения (не это случай только, а вообще) рожай в голове мысль на время Всё что не явно то UB порой надеешься на что-то, а оно не то, компилёр с причудами, флаги какие или ещё что. Потом эту мысль можно выкинуть. Но если что сразу про неё вспоминать и делать правки в поиске истины следуя за этой мыслью неуклонно.

Сам не умею ничего вот и учу =)