Этот ваш лживый С или "ты проверяй какого пола твой сосед"
- Войдите на сайт для отправки комментариев
Пт, 17/12/2021 - 08:59
Собственно это 1-я часть пятничного поста:
Есть такой маленький пример:
// ESP8266 char tic[8]; uint32_t n = 0xfefefefe; void setup() { Serial.begin(115200); } void loop() { Serial.println(n); delay(1000); Serial.println(utoa(n,tic,10)); delay(1000); }
Под переменную отведён заведомо меньший объём памяти! И что же видим...полёт нормальный...
4278124286 4278124286
А ожидалось, что чип треснет напополам?
Ожидалось, что отсечёт на уровне 7 знаков
Каким образом функция узнает по указателю размер выделенной области памяти? Что-то я не припомню таких методов против Кости Сапрыкина.
Смотрим дальше:
И вывод:
Посмотрел. Вопрос тот же, что и выше.
Ну просто повезло.
Как вы стали валютной проституткой?
- ну просто повезло!
Тему переименовать в "пример выхода за границы массива."
Ничо не понял, ну ладно, понаблюдаю.
В мониторе порта:
Здесь то всё логично!
Логично что - два знака вместо семи? Обождите, я через часик накачу и вернусь - может действительно все логично.
вместо 11 )))
Жду, ты потом поделись какие "Леночка, яица подействовали"
Компилятор переменные в памяти расставляет как ему удобно ...
Компилятор переменные в памяти расставляет как ему удобно ...
я думаю дело не в этом, еще в Турбо С первой версии было выравнивание на величину сегмента (32 байта), может оно? Так вот куда утекать может всё, нажитое непосильным трудом )))
Адреса выведи
Какая тут пятница? - тупая какая-то тема, троллинг скучный и несмешной, особенно после аналогичного обсуждения запихивания строки в указатель в соседней теме.
Ребята, какой смысл обсуждать результаты НЕПРАВИЛЬНОГО использования памяти? - ТС лучше бы чему правильному поучился
Адреса выведи
Это оно?
Выходит не лживый однако, эффективный манипулятор сознанием )))
Теперь поменяйте порядок объявления переменных и одно налезет на другое как в AVR.
Просто вам повезло и tic наехал на что то другое ...
Теперь поменяйте порядок объявления переменных и одно налезет на другое как в AVR.
Просто вам повезло и tic наехал на что то другое ...
так и случилось
Адрес можно и без листинга увидеть - Serial.println((uint32_t)&n, HEX);
Какая тут пятница? - тупая какая-то тема, троллинг скучный и несмешной, особенно после аналогичного обсуждения запихивания строки в указатель в соседней теме.
Не хочу расстраивать, но троллингом тут не пахнет. Все на полном серьёзе.
на самом деле и темы бы не было если бы вчера не напоролся на невоспроизводимый сегодня глюк, а именно, в переменную tic записывалось что угодно, но только не значение переменной n, пока поле переменной tic не расширил до 14 байт.
Не 11 а 14 Карл...