CppCon 2018: Arthur O'Dwyer “An Allocator is a Handle to a Heap”

Sdílet
Vložit
  • čas přidán 9. 06. 2024
  • CppCon.org
    -
    Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/CppCon/CppCon2018
    -
    C++17 introduced the std::pmr framework. In this framework, a std::pmr::polymorphic_allocator<T> holds a pointer to a std::pmr::memory_resource. The memory resource is in charge of managing and organizing the heap itself, and the allocator object is just a thin "handle" pointing to the memory resource.
    This is not just a convenient implementation strategy for std::pmr! Rather, this elucidates the true meaning of the Allocator concept which has existed, unchanged, since C++98. An Allocator is a (value-semantic) handle to an (object-semantic) MemoryResource. Even std::allocator can - and should - be viewed as a handle to a global singleton "heap", and not as a heap itself.
    From this core insight we derive many corollaries, such as the need for allocator types to be lightweight and efficiently copyable, the fundamental impossibility of implementing an "in-place" std::vector via stupid allocator tricks, and the philosophical underpinnings of "rebinding."
    Time permitting, we'll
    - discuss what we can expect from a "moved-from" allocator object
    - relate the notion of "handle" to neighboring notions such as "façade" and "adaptor"
    - suggest similarities between "allocator/heap" and "executor/execution-context"
    -
    Arthur O'Dwyer
    Arthur O'Dwyer started his career writing pre-C++11 compilers for Green Hills Software; he currently writes C++14 for Akamai Technologies. Arthur is the author of "Colossal Cave: The Board Game," "Mastering the C++17 STL" (the book), and "The STL From Scratch" (the training course). He is occasionally active on the C++ Standards Committee and has a blog mostly about C++.
    -
    Videos Filmed & Edited by Bash Films: www.BashFilms.com
    *-----*
    Register Now For CppCon 2022: cppcon.org/registration/
    *-----*

Komentáře • 5

  • @MyPlanetIsPluto
    @MyPlanetIsPluto Před 2 lety +3

    My favorite C++ speaker by far. Learned so much from this guy.
    21:45 was the big aha moment for me where things started to click

  • @sjswitzer1
    @sjswitzer1 Před 3 měsíci

    The distinction he wanted to make is between _value_ types and _reference_ types.

  • @ejyjawa352
    @ejyjawa352 Před 3 lety +1

    This is great talk !

  • @mmmars1000
    @mmmars1000 Před 5 lety +4

    I love these videos but it would be cool if the volume was turned a bit higher.