Skip to content

Nekrolm/ubbook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡƒΡ‚Π΅Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ C++ программиста ΠΏΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ повСдСнию

If you are looking for english version

ΠŸΠ°Π½ΠΈΠΊΡƒΠΉ!


ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Ρ‚ΠΎΠΌ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ

ВсС начинаСтся просто ΠΈ Π½Π΅Π·Π°Ρ‚Π΅ΠΉΠ»ΠΈΠ²ΠΎ: ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ дСсятиклассник увлСкаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, знакомится с алгоритмичСскими Π·Π°Π΄Π°Ρ‡ΠΊΠ°ΠΌΠΈ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ быстрыми. Π£Π·Π½Π°Π΅Ρ‚ ΠΎ языкС C++, ΡƒΡ‡ΠΈΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ синтаксис, основныС конструкции, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ с ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈ всСгда ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΈ горя Π½Π΅ Π·Π½Π°Π΅Ρ‚...

Π’ это ΠΆΠ΅ врСмя, Π³Π΄Π΅-Ρ‚ΠΎ Π² большом ΠΌΠΈΡ€Π΅, ΠΌΠ°Ρ‚Π΅Ρ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Ρ€ΡƒΠ³Π°ΡŽΡ‚ Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ языки программирования, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. По самым Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ: Π½Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ возмоТности, ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡˆΠ½ΠΈΡ… Π±ΡƒΠΊΠ² ΠΏΠΈΡΠ°Ρ‚ΡŒ, ошибки Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅... Но Π΅ΡΡ‚ΡŒ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€ΡƒΠ³Π°ΡŽΡ‚ Π·Π° всС ΠΈ особСнно Π·Π° Ρ‚Π°ΠΊΡƒΡŽ Π½Π΅ΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽ ΠΈ Ρ‚Π°ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (undefined behavior, UB).

Бпустя Π»Π΅Ρ‚ ΠΏΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΡŒ наш простой дСсятиклассник, горя Π½Π΅ видавший Π² ΠΌΠΎΡ€Π΅ ΠΎΡ‚ΠΎΡ€Π²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡƒΠ·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌ самым горячо Π½Π΅Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌ языком всСгда Π±Ρ‹Π», остаСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π³ΠΎ C++.

А ΠΏΠΎΡ‚ΠΎΠΌ Π΅Ρ‰Π΅ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ ΠΎΠ½ наткнСтся Π½Π° самыС ΠΊΠΎΡˆΠΌΠ°Ρ€Π½Ρ‹Π΅ ΠΈ нСвСроятныС уТасы, ΠΏΠΎΠ΄ΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ программистов Π½Π° C++ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡˆΠ°Π³Ρƒ. Π’Π°ΠΊ ΠΈ появится эта сСрия Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ, ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‰Π°Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ‚ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ повсСднСвных Π·Π°Π΄Π°Ρ‡.


Β«ΠŸΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ оптимизация β€” ΠΊΠΎΡ€Π΅Π½ΡŒ всСх Π·ΠΎΠ»Β» (Π”. ΠšΠ½ΡƒΡ‚ ΠΈΠ»ΠΈ Π­. Π₯ΠΎΠ°Ρ€ β€” Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ источник смотритС). Π―Π·Ρ‹ΠΊ Π‘++, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ яркая Ρ‚ΠΎΠΌΡƒ дСмонстрация: ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ошибок Π² C++ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… связаны с Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Π² Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π΅ языка просто для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ простор оптимизациям Π½Π° этапС компиляции.

Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° C++ ΠΊΠΎΠ΄, Π² работоспособности ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌΠΈ, стоит Π·Π½Π°Ρ‚ΡŒ ΠΎ сущСствовании Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ ΠΈ Π»ΠΎΠ²ΠΊΠΎ расставлСнных ΠΌΠΈΠ½ Π² стандартС языка, Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, ΠΈ всячСски ΠΈΡ… ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ. Π˜Π½Π°Ρ‡Π΅ ваши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ машинС ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²ΠΎΠ»Π΅ случая.

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ я собрал мноТСство самых Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ΄Π΅ Π½Π° C ΠΈ C++ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‚ΠΊΠ½ΡƒΡ‚ΡŒΡΡ Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅, Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. И хотя основной фокус ΠΊΠ½ΠΈΠ³ΠΈ всё ΠΆΠ΅ Π½Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ‰ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ спСцифицированныС, Π½ΠΎ довольно Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅.

Π’Π°ΠΆΠ½ΠΎ: этот сборник Π½Π΅ являСтся ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ пособиСм ΠΏΠΎ языку ΠΈ рассчитан Π½Π° Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, с C++, ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ основныС Π΅Π³ΠΎ конструкции.


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

  1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ UB ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ проявляСтся
  2. Как ΠΈΡΠΊΠ°Ρ‚ΡŒ UB?
  3. Π¦Π΅Π»Ρ‹Π΅ ΠΈ вСщСствСнныС числа
    1. Π‘ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠ΅ прСобразования
    2. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл
    3. Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ
    4. Integer promotion
    5. char ΠΈ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅
    6. Π£Π½Π°Ρ€Π½Ρ‹ΠΉ минус для Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… чисСл
  4. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ lifetime ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    1. ВисячиС ссылки β€” ΠΎΠ±Ρ‰ΠΈΠ΅ случаи
    2. Автовывод Ρ‚ΠΈΠΏΠΎΠ² ΠΈ висячиС ссылки
    3. std::string_view
    4. Range-based for
    5. Cамоинициализация
    6. std::vector ΠΈ инвалидация ссылок
    7. ВисячиС ссылки Π² лямбдах
    8. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ
    9. ВнСзапная ΠΌΡƒΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
    10. Proxy-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ссылки
    11. use-after-move
    12. lifetime extension
    13. C++20 direct initialization ΠΈ ссылочныС поля
    14. Π’Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€
    15. ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈ врСмя ΠΆΠΈΠ·Π½ΠΈ
  5. (НС)Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ синтаксис
    1. Most Vexing Parse
    2. Const
    3. std::move
    4. ΠŸΠΎΡ‚Π΅Ρ€ΡΠ½Π½Ρ‹ΠΉ return
    5. Эллипсис ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ числом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²
    6. operator ,
    7. function-try-block
    8. ΠŸΡƒΡΡ‚Ρ‹Π΅ структуры ΠΈ Ρ‚ΠΈΠΏΡ‹ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
    9. (НС)явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²
    10. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ operator[]
    11. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния Π² C++20
    12. Атрибут [[assume]]
    13. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ = default
    14. implicit bool
  6. Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°
    1. NULL-Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки
    2. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ std::shared_ptr
    3. shared_from_this
    4. ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°
    5. std::aligned_storage
    6. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹
    7. std::ranges::views
    8. operator[] ассоциативных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²
    9. std::enable_if/std::void_t
    10. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²
    11. std::uniform_int_distribution
    12. std::ranges::transform | filter
    13. vector::reserve ΠΈ vector::resize
    14. std::function
    15. std::forward
  7. ИсполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    1. БСсконСчныС Ρ†ΠΈΠΊΠ»Ρ‹
    2. РСкурсия
    3. Π›ΠΎΠΆΠ½Ρ‹ΠΉ noexcept
    4. ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°
    5. Π‘Π±ΠΎΡ€Ρ‰ΠΈΠΊ мусора
    6. RAII vs (N)RVO
    7. Π Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ nullptr
    8. Static initialization order fiasco
    9. Static inline
    10. ODR violation
    11. Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°
    12. Π’Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ ABI
    13. НСинициализированныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅
    14. Ranges. Unreachable sentinel
    15. ΠΠ΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
    16. Variable length array
    17. ODR violation ΠΈ раздСляСмыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
    18. Π’Π»Π°Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
  8. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ
    1. НСвалидныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ
    2. Placement operator new[]
    3. НСвыровнСнныС ссылки
    4. strict aliasing
  9. ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ
    1. Race condition
    2. shared_ptr
    3. thread::join
    4. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ Π·Π°Ρ…Π²Π°Ρ‚ mutex
    5. Signal-unsafe
    6. condition_variable
    7. Π“ΠΎΠ½ΠΊΠΈ Π·Π° vptr
    8. std::async
    9. Ѐайловая систСма

ΠŸΠΎΠΌΠΎΡ‰ΡŒ

Π’ тСкстС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ошибки, ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ, нСточности, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Ρ€Π΅Π²Π°Ρ‚ΡŒ. ПоТСлания, прСдлоТСния ΠΈ замСчания ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ: ΠΌΠΎΠΆΠ½ΠΎ завСсти issue ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ pull request.

И Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ

Π‘Π΅Π³Π°Ρ‚ΡŒ Π·Π° Π²Π°ΠΌΠΈ ΠΈ ΡΡƒΠ΄ΠΈΡ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΡ€ сСго сборника Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ всС-Ρ‚Π°ΠΊΠΈ:

На этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ. МоТно ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Π½Π΅Π³ΠΎ, со ссылками, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅.

Для копирования ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ воспроизвСдСния Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ согласиС Π°Π²Ρ‚ΠΎΡ€Π°

НСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… сСрвисах ΠΈΠ»ΠΈ Π²Π·ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρƒ Π·Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ этим ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ.

Ну ΠΈ самоС послСднСС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π§Π΅Ρ€Π½ΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ этой Ρ€Π°Π±ΠΎΡ‚Ρ‹, "Π ΡƒΠΆΡŒΠ΅ достаточной ΠΎΠ³Π½Π΅Π²ΠΎΠΉ ΠΌΠΎΡ‰ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π½Π΅ΠΌ ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒΡΡ", ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ ΠΈΡΠΊΡƒΡˆΠ΅Π½Π½Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, Π±Ρ‹Π»ΠΎ эдаким рСвСрансом Π² сторону извСстного (Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ ΡΠΎΡΡ‚Π°Ρ€ΠΈΠ²ΡˆΠ΅Π³ΠΎΡΡ) сборника ΠΏΠΎ C++ "Π’Π΅Ρ€Π΅Π²ΠΊΠ° достаточной Π΄Π»ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡ‚Ρ€Π΅Π»ΠΈΡ‚ΡŒ сСбС Π² Π½ΠΎΠ³Ρƒ" ΠΎΡ‚ Алана Π“ΠΎΠ»ΡƒΠ±Π°. Но, ΠΊ соТалСнию, ΠΌΡ‹ ΠΆΠΈΠ²Π΅ΠΌ Π² Π½Π΅ΠΆΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ²ΡˆΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ранТирования ΠΈ Π½Π°Π΄Π·ΠΎΡ€Π½Ρ‹Ρ… ΠΎΡ€Π³Π°Π½ΠΎΠ², Ρ‚ΠΎ ΠΈ Π΄Π΅Π»ΠΎ стрСмящихся ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ.

Автор, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ всСх ΠΎΡ‚ C++, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ этому ΠΈ слуТит Π΄Π°Π½Π½Ρ‹Ρ… сборник, Π½ΠΎ с Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ пСссимизированным Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ прогрСсса Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Copyright 2020-2024 Dmitry Sviridkin

About

C++ programmer's guide to undefined behavior

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published