zHz00 Untitled

пятница, 01 декабря 2023
03:06 Неожиданные волшебные числа в переменных
Если ваши переменные имеют неправильные значения, и они всё время разные -- то отсюда дополнительной информации извлечь нельзя. А если значения повторяются? Их надо перевести в шестнадцатеричную систему.

Одна переменная у меня имела значение -107374176.0 . Постоянно. Сначала я её сконвертировал как целое число, но ничего интересного не нашёл (0x06666660, 0xF99999A0). Таких значений я не знал, но повторяющиеся цифры намекали, что тут собака всё-таки зарыта.

Тогда я решил попробовать использовать то, что написано. Число float, значит буду преобразовывать float. Взял в интернете калькулятор IEEE 754 и преобразовал. И что я получил?

0xCCCCCCCC

А вот это было уже известное число. Это неинициализированная память. Значит, в мою переменную попадает либо значение, прочитанное мимо массива, либо по указателю на валидную, но бессмысленную область памяти (что, в принципе, одно и то же).

Это не решение задачи, но очень серьёзная подсказка.

@темы: Программирование, Борьба с техникой

URL
Мишка работает три недели без выходных. И сейчас на работ...
Вот стоит только подумать, что все хорошо, обязательно ка...
Тихий зимний вечер. На улице медленно падали искрящиеся п...
Ши:Зачёт провален, т.к. И.Н.К. решила в последний момент ...
На 226 огромных екранах по всей стране игру смотрели око...
Сычев плакал, наверное он единственный из нашей команды к...

01.12.2023 в 17:03

01.12.2023 в 17:03
Ух ты. А я думал неинициализированная память заполнена нулями.
URL

01.12.2023 в 17:24

01.12.2023 в 17:24
Xersareeth, есть несколько "зон" памяти. Зона глобальных переменных заполняется нулями. Зона кучи и зона стека заполняется мусором. Но вижуал студия помогает разработчикам и частенько вместо мусора можно найти цешки.
URL

01.12.2023 в 17:39

01.12.2023 в 17:39
Где-то я краем уха читал что в современных ОС есть очистка памяти после освобождения, чтобы нельзя было вычитать что-то интересное из мусора другого процесса. И из-за этого могут глючить старые программы, в которых есть баги при работе с памятью.
URL

01.12.2023 в 18:08

01.12.2023 в 18:08
Xersareeth, очень может быть! Но конкретно на стеке моя программа ещё до запуска текущей функции могла наследить так, что будь здоров, и там реально может быть мусор.
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail