Забыли такой важный атрибут как `адрес`. И ещё забыли `storage duration`. Атрибут `значение` голосом упомянули, но на слайде не было (тоже опциональный атрибут). - размер (size) - выравнивание (alignment) - тип (type) - времени жизни (lifetime) - опциональное имя (identifier)
Шутки ради, и для понимания, что UB - это не страшный дракон, а честное заявление разработчиков языка, что не всякую сову можно натянуть на глобус. Так что, есть такие совы, где nullptr вполне себе валидный адрес памяти. Serial.println("do test..."); int* ptr = nullptr; Serial.println(*ptr); // !!!! int& r = *ptr; // !!!! asm volatile ( "ldi r16, 47 " "mov r0, r16 " ); Serial.println(r); // !!!! Serial.println("test done"); do test... 63 47 test done
@@alexeybaranov8869 согласен, есть архитектуры, где можно записывать и считывать данные по нулевому адресу памяти. Однако это выходит за область действия стандарта языка. Компилятор может сделать тут все, что угодно.
Чем скорее это видео наберёт 10 лайков, тем быстрее выйдет новый ролик.
Какие скромные запросы
Уже 30 лайков есть. В следующий раз 50 лайков проси или даже 100.
Алексей, большое спасибо! Хорошая, достаточно подробная лекция, упоминаете многие тонкие моменты и важные нюансы
Спасибо большое ! Просто, доступно и очень полезно !
Уже 9 лайка 😮
Забыли такой важный атрибут как `адрес`. И ещё забыли `storage duration`. Атрибут `значение` голосом упомянули, но на слайде не было (тоже опциональный атрибут).
- размер (size)
- выравнивание (alignment)
- тип (type)
- времени жизни (lifetime)
- опциональное имя (identifier)
@@dino_source спасибо за дополнение, доработаю презентацию для следующего потока студентов
Шутки ради, и для понимания, что UB - это не страшный дракон, а честное заявление разработчиков языка,
что не всякую сову можно натянуть на глобус.
Так что, есть такие совы, где nullptr вполне себе валидный адрес памяти.
Serial.println("do test...");
int* ptr = nullptr;
Serial.println(*ptr); // !!!!
int& r = *ptr; // !!!!
asm volatile
(
"ldi r16, 47
"
"mov r0, r16
"
);
Serial.println(r); // !!!!
Serial.println("test done");
do test...
63
47
test done
@@alexeybaranov8869 согласен, есть архитектуры, где можно записывать и считывать данные по нулевому адресу памяти. Однако это выходит за область действия стандарта языка. Компилятор может сделать тут все, что угодно.