Модель памяти C++. Часть 1. Указатели. Адресная арифметика

Поделиться
HTML-код
  • Опубликовано: 17 окт 2024

Комментарии • 10

  • @vividbw
    @vividbw  2 месяца назад +1

    Чем скорее это видео наберёт 10 лайков, тем быстрее выйдет новый ролик.

    • @Raspi8
      @Raspi8 2 месяца назад +1

      Какие скромные запросы

    • @dino_source
      @dino_source 2 месяца назад

      Уже 30 лайков есть. В следующий раз 50 лайков проси или даже 100.

  • @jackcarver2411
    @jackcarver2411 2 месяца назад

    Алексей, большое спасибо! Хорошая, достаточно подробная лекция, упоминаете многие тонкие моменты и важные нюансы

  • @01377
    @01377 2 месяца назад

    Спасибо большое ! Просто, доступно и очень полезно !

  • @avr_stm_pro2955
    @avr_stm_pro2955 2 месяца назад

    Уже 9 лайка 😮

  • @dino_source
    @dino_source 2 месяца назад

    Забыли такой важный атрибут как `адрес`. И ещё забыли `storage duration`. Атрибут `значение` голосом упомянули, но на слайде не было (тоже опциональный атрибут).
    - размер (size)
    - выравнивание (alignment)
    - тип (type)
    - времени жизни (lifetime)
    - опциональное имя (identifier)

    • @vividbw
      @vividbw  2 месяца назад +2

      @@dino_source спасибо за дополнение, доработаю презентацию для следующего потока студентов

  • @alexeybaranov8869
    @alexeybaranov8869 2 месяца назад

    Шутки ради, и для понимания, что 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

    • @vividbw
      @vividbw  2 месяца назад +1

      @@alexeybaranov8869 согласен, есть архитектуры, где можно записывать и считывать данные по нулевому адресу памяти. Однако это выходит за область действия стандарта языка. Компилятор может сделать тут все, что угодно.