C++ 3. Аллокаторы

Поділитися
Вставка
  • Опубліковано 29 вер 2024

КОМЕНТАРІ • 10

  • @Alexander_Gurov_RF
    @Alexander_Gurov_RF 2 роки тому +3

    На самом деле с malloc всё не совсем так, и mmap тут не причём - он для другого. Хотя, возможно встречаются какие то реализации библиотек. На самом деле он довольно просто устроен. Но есть разные реализации. Прежде всего, malloc работает с двухмерным списком, и возвращает адрес, перед которым лежит структура (node). Ещё, если речь идёт про Линукс, он вызывает sbrk, который, в свою очередь, делает системный вызов brk, который изменяет верхнюю границу памяти процесса. Выделение же физических страниц памяти происходит уже непосредственно при обращении к ним, из обработчика исключений. И malloc не всегда делает системные вызовы. В большинстве реализаций стандартной библиотеки блоки малого размера выделяются в отдельном месте, где память уже заранее выделена.

  • @niklkelbon3662
    @niklkelbon3662 2 роки тому

    Если сделать шаблонный аргумент шаблона то нельзя будет передать не шаблонный аллокатор. Ну и слушатели могли понять это как "в С++ нельзя шаблонный аргумент шаблона", но это не так.
    P.S. вызов деструктора фундаментального типа в шаблонном коде это не ошибка

  • @walcermelodia
    @walcermelodia 2 роки тому +1

    Как называется курс? Разве на первом курсе фпми уже не читают лекции по плюсам?

    • @sergeybarsukov6198
      @sergeybarsukov6198 2 роки тому

      Так это и есть лекции первого курса

    • @walcermelodia
      @walcermelodia 2 роки тому

      @@sergeybarsukov6198 а что за курс тогда про плюсы который ведет мещерин на своем ютуб канале?

    • @sergeybarsukov6198
      @sergeybarsukov6198 2 роки тому

      @@walcermelodia на канале Ильи Мещерина выкладывается курс основного потока, здесь - курс продвинутого

  • @ЗапахПопочки
    @ЗапахПопочки 2 роки тому

    Привет.Выложите задания, пожалуйста

  • @alexskatkov2124
    @alexskatkov2124 2 роки тому

    15:58 зачем reinterpret_cast и new char[...], когда можно static_cast и malloc? Так мы и время не будем терять на инициализацию чаров.
    Случай номер 2 отсюда: en.cppreference.com/w/cpp/language/default_initialization

    • @rastvl
      @rastvl 2 роки тому

      Разве встроенные типы(int, char…) как-то инициализируются?
      int main() {
      int i;
      return i; // UB
      }

    • @alexskatkov2124
      @alexskatkov2124 2 роки тому +1

      В Вашем случае это ub. Дело в том, что можно записывать в неинициализированную память, а читать нельзя. В примере из видео сначала происходит инициализация чаров, а потом вызывается конструктор типа контейнера по этим чарам. Получается, что первая инициализация не имела смысла.