Библиотека C/C++ разработчика
前往频道在 Telegram
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
显示更多7 310
订阅者
-324 小时
-117 天
-430 天
数据加载中...
相似频道
标签云
进出提及
---
---
---
---
---
---
吸引订阅者
六月 '26
六月 '26
+54
在0个频道中
五月 '26
+79
在2个频道中
Get PRO
四月 '26
+85
在0个频道中
Get PRO
三月 '26
+80
在0个频道中
Get PRO
二月 '26
+95
在0个频道中
Get PRO
一月 '26
+90
在0个频道中
Get PRO
十二月 '25
+80
在1个频道中
Get PRO
十一月 '25
+138
在39个频道中
Get PRO
十月 '25
+134
在2个频道中
Get PRO
九月 '25
+158
在36个频道中
Get PRO
八月 '25
+316
在2个频道中
Get PRO
七月 '25
+255
在27个频道中
Get PRO
六月 '25
+270
在19个频道中
Get PRO
五月 '25
+141
在45个频道中
Get PRO
四月 '25
+178
在37个频道中
Get PRO
三月 '25
+140
在38个频道中
Get PRO
二月 '25
+215
在31个频道中
Get PRO
一月 '25
+207
在33个频道中
Get PRO
十二月 '24
+240
在34个频道中
Get PRO
十一月 '24
+218
在32个频道中
Get PRO
十月 '24
+255
在29个频道中
Get PRO
九月 '24
+309
在28个频道中
Get PRO
八月 '24
+197
在18个频道中
Get PRO
七月 '24
+162
在1个频道中
Get PRO
六月 '24
+215
在24个频道中
Get PRO
五月 '24
+207
在19个频道中
Get PRO
四月 '24
+258
在0个频道中
Get PRO
三月 '24
+280
在21个频道中
Get PRO
二月 '24
+324
在19个频道中
Get PRO
一月 '24
+312
在23个频道中
Get PRO
十二月 '23
+220
在25个频道中
Get PRO
十一月 '23
+202
在18个频道中
Get PRO
十月 '23
+212
在19个频道中
Get PRO
九月 '23
+195
在0个频道中
Get PRO
八月 '23
+159
在0个频道中
Get PRO
七月 '23
+185
在0个频道中
Get PRO
六月 '23
+224
在0个频道中
Get PRO
五月 '23
+173
在0个频道中
Get PRO
四月 '23
+146
在0个频道中
Get PRO
三月 '23
+116
在0个频道中
Get PRO
二月 '23
+184
在0个频道中
Get PRO
一月 '23
+361
在0个频道中
Get PRO
十二月 '22
+193
在0个频道中
Get PRO
十一月 '22
+135
在0个频道中
Get PRO
十月 '22
+244
在0个频道中
Get PRO
九月 '22
+269
在0个频道中
Get PRO
八月 '22
+307
在0个频道中
Get PRO
七月 '22
+548
在0个频道中
Get PRO
六月 '22
+1 976
在0个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 23 六月 | +1 | |||
| 22 六月 | +3 | |||
| 21 六月 | +1 | |||
| 20 六月 | 0 | |||
| 19 六月 | +3 | |||
| 18 六月 | 0 | |||
| 17 六月 | 0 | |||
| 16 六月 | +6 | |||
| 15 六月 | 0 | |||
| 14 六月 | +1 | |||
| 13 六月 | +2 | |||
| 12 六月 | +2 | |||
| 11 六月 | +5 | |||
| 10 六月 | +2 | |||
| 09 六月 | +1 | |||
| 08 六月 | +2 | |||
| 07 六月 | +3 | |||
| 06 六月 | +3 | |||
| 05 六月 | +2 | |||
| 04 六月 | +6 | |||
| 03 六月 | +5 | |||
| 02 六月 | +4 | |||
| 01 六月 | +2 |
频道帖子
🧩 Почему «обычный STL» в C++ иногда заменяют своим велосипедом
На Хабре вышел большой разбор альтернативных STL и контейнеров, которые используют в геймдеве, highload-сервисах, компиляторах и приложениях, где важны память, кеши и предсказуемость.
В материале разбирают:
🔹 EASTL — библиотеку от Electronic Arts для игровых проектов, консолей и кода с жёстким бюджетом памяти. Главный плюс — контроль аллокаций и предсказуемое поведение на разных платформах.
🔹 LLVM SmallVector / DenseMap — контейнеры для случаев, где много мелких короткоживущих структур и важно не прыгать по куче без необходимости.
🔹 Folly — набор библиотек от Meta для highload-сервисов: быстрые хеш-таблицы, строки, small_vector и оптимизации под большие нагрузки.
🔹 Boost flat_map / std::flat_map — словарь на отсортированном векторе. Хорош, когда данные часто читаются и редко меняются.
🔹 Zmeya / FlatBuffers / Cap’n Proto — подход для read-only данных, которые можно загрузить почти без парсинга и сразу читать из памяти.
Прежде чем тащить в проект EASTL, Folly или очередной «супербыстрый» контейнер, сначала стоит измерить реальные bottleneck’и. Потому что единственная секта, которой можно доверять в C++, — это секта профилирования своих данных.
https://habr.com/ru/articles/1042198/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib
| 2 | Магия Lovable: как создавать готовые интерфейсы с помощью одного запроса.
Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ»
Lovable может за минуты собрать экран, который выглядит как почти готовый интерфейс. Но результат зависит не от «магии нейросети», а от того, насколько точно вы ставите задачу. Один расплывчатый запрос даст случайный макет, а правильно собранный системный промпт — понятную структуру, единый стиль и экран, который уже можно показывать команде, заказчику или использовать для проверки идеи.
На открытом уроке 2 июля в 20:00 разберём, как формулировать задачи для Lovable, чтобы получать предсказуемый результат с первой попытки. Поговорим о структуре системного промпта, ключевых словах, которые помогают превратить текст в качественный интерфейс, и способах доработки результата через встроенный редактор и повторные запросы. Отдельно обсудим, как управлять компонентами, просить нейросеть переиспользовать элементы и сохранять единый визуальный стиль.
Урок не для тех, кто ждёт, что Lovable «сам всё поймёт», не готов уточнять задачу и хочет получать качественный интерфейс без структуры, контекста и итераций.
👉 Записаться: https://vk.cc/cYZCBy
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576 | 510 |
| 3 | Большие новости для C++: решаем фундаментальные проблемы из 90-х в C++29 🚀
Разбираем свежие вести с июньского комитета по стандартизации C++ в Брно. Пол МакКенни опубликовал отличный апдейт по двум сложным темам: Lifetime-End Pointer Zap и OOTA-доступам. Лед окончательно тронулся.
🔹 Lifetime-End Pointer Zap
Три важнейших пейпера (базирующиеся на P2434R4) официально проголосованы для включения в C++29. Они наконец-то легализуют и строго определяют атомарные и volatile операции для невалидных указателей.
Что это дает на практике? Тот самый infamous алгоритм LIFO Push теперь можно реализовать на плюсах абсолютно легально и прямолинейно. По сути, закрыта архитектурная проблема, висевшая со времен самого первого стандарта 1998 года.
(Четвертый пейпер, P3790 про bag-of-bits класс указателей, концептуально одобрен, но отправлен на доработку формулировок до ноябрьской встречи).
🔹 OOTA (Out-of-Thin-Air) значения
Появление значений «из ниоткуда» при атомарных операциях — классическая головная боль. Пейпер P3692R4, который тоже залетел в C++29, предлагает элегантный выход для реального железа.
Суть проста: физическое время не идет назад. Для кода без UB на физических машинах классических компиляторов OOTA можно избежать. Если вы используете исключительно volatile-атомики — гарантия 100%. Для non-volatile компиляторы должны ограничивать перестановку инструкций, чтобы не создавать циклические зависимости.
Это не закрывает вопрос для инструментов формальной верификации вроде herd7 (так как они вообще не моделируют время — для них математическое доказательство еще готовит Марк Бэтти), но решает самую насущную проблему для реального продакшена.
🔗 Читать оригинал статьи https://people.kernel.org/paulmck/c-pointer-zap-and-oota-progress
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 520 |
| 4 | Teaching C++ to Game Development Students in the Age of LLMs with Tom Tesch (Аудиоформат)
Jason and Mathieu are joined by Tom Tesch to discuss teaching C++ to game development students, how LLMs and chatbots are reshaping programming education and assessment, and the lessons that come from teaching on retro hardware like the NES.
https://cppcast.com/teaching_cpp_to_game_development_students_in_the_age_of_llms_with_tom_tesch/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 565 |
| 5 | С/С++ в современном машинном обучении: традиционные роли и возможности нового стандарта
Меня зовут Кирилл, я разработчик СХД в YADRO и ML-энтузиаст, автор книги "Hands-on Machine Learning with C++". Я заметил, что роль С/С++ в экосистеме машинного обучения трансформируется прямо сейчас. Чтобы понять, какое значение язык играет в развитии ML, мы поговорим о классическом применении C++ для ручной оптимизации вычислительных ядер. Затем разберемся, почему новый стандарт не закрепляет реализаций линейной алгебры, а отдает это на откуп поставщикам стандартной библиотеки и вендорам оборудования. И в завершение подумаем, как работать с «зоопарком реализаций», который из-за этого остается.
https://habr.com/ru/companies/yadro/articles/1048932/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 717 |
| 6 | 🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак
Английский с нуля 🇬🇧
https://max.ru/UchuEnglish
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП | 371 |
| 7 | 🤖Программа работает стабильно до тех пор, пока не появляется загадочный сбой, неожиданное завершение или утечка памяти. И чем крупнее проект, тем дороже обходятся такие ошибки.
📆2 июля в 20:00 МСК на открытом уроке разберём одну из ключевых тем языка, от которой напрямую зависят надёжность и предсказуемость работы приложений.
На практических примерах рассмотрим жизненный цикл объектов, создание и удаление данных, типичные ошибки при работе с памятью и способы поиска утечек. Поговорим о неочевидных случаях, которые встречаются даже в зрелых проектах.
🏁Урок проходит в преддверии старта курса «C++-разработчик». Регистрируйтесь, чтобы разобраться в фундаментальных механизмах языка, познакомиться с форматом обучения и задать вопросы эксперту: https://vk.cc/cYRwfk
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru | 1 059 |
| 8 | Почему функции rand и lrand48 из glibc годятся только для Тетриса: о случайных числах всерьёз
Функцию rand из стандартной библиотеки языка Си для генерации псевдослучайных чисел, наверное, не ругал только ленивый. В довольно известном докладе Rand considered harmful рассказывалось о проблемах с переносимостью, ограниченным диапазоном, многопоточностью, качеством и т.п. Иногда в учебниках упоминают о том, что алгоритм в rand может быть не очень качественным, иметь проблемы с младшими битами, периодом, прохождением статистических тестов. Но крайне редко можно увидеть разбор конкретных критериев, выявляющих дефекты генераторов. В этой статье я постараюсь наглядно показать не просто отдельные недостатки rand, lrand48 и random из glibc, но их полную непригодность для каких-либо вычислений в принципе. Также вы увидите превосходство поточных шифров над minstd, линейным конгруэнтным генератором из 1980-х, не только в качестве, но и в производительности.
https://habr.com/ru/articles/1005118/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 001 |
| 9 | Динамический полиморфизм против std::variant с указателями: Разрушаем мифы о скорости std::visit (v.2*)
В экосистеме современного C++ прочно укоренилось мнение: классический динамический полиморфизм через виртуальные функции (vtable) и наследование — это устаревший, медленный и недружелюбный к кэшу процессора механизм. В качестве «серебряной пули» модно предлагать связку std::variant и std::visit. Если вы спросите любого виртуального умника (ИИ) он до последнего будет убеждать вас что std::variant и std::visit всегда(!) лучше чем виртуальные функции, даже не сомневайтесь. Проблема в том что с таким отношением вы во многих случаях просто лишаете себя выбора адекватного технического решения. Решения адекватного условиям конкретной задачи с необходимостью диспетчеризации вызовов. По интернету кочуют статьи, утверждающие, что std::visit выполняет диспетчеризацию за фиксированное время O(1) и полностью уничтожает старый добрый ООП-подход, но вы должны понимать что не существует универсальных решений на все случаи жизни.
https://habr.com/ru/articles/1047930/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 917 |
| 10 | Оптимизация GUI на Qt
Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!
https://habr.com/ru/post/672962/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 158 |
| 11 | Как правильно вызывать CUDA
Вероятно, вам уже попадались подобные руководства по CUDA: хрестоматийный пример «Hello World», в котором перемешан код для ЦП и графического процессора. Всё это сложено в один гетерогенный файл с исходниками на CUDA C++, а для запуска ядра применяется синтаксис NVCC с тройными угловыми скобками <<<>>>, который уже стал культовым:
#include <cuda_runtime.h>
#include <stdio.h>
__global__ void kernel() {
printf("Hello World from block %d, thread %d\n", blockIdx.x, threadIdx.x);
}
int main() {
kernel<<<1, 1>>>(); // Возвращает `void`?!
return cudaDeviceSynchronize() == cudaSuccess ? 0 : -1;
}
Время идёт, а такой паттерн по-прежнему попадается мне в продакшен-коде. Признаюсь, кое-где он всплывает и в моих любительских проектах — раз, два, три. Но это не лучшая идея, полагаться в серьёзном коде на запуск ядра через тройные угловые скобки. В таком случае программа не возвращает коды ошибок, поэтому может показаться обманчиво простой. Ниже вас ждут примерно 25 килобайт текста, в которых мы обсудим не самые корявые способы запуска ядер.
https://ashvardanian.com/posts/less-wrong-cuda-hello-world/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 420 |
| 12 | Лекции С++ продвинутый поток ФПМИ 2023-24
Лекция 1. Введение в язык C++. Основные типы и операции над ними
Лекция 2. Основные команды в терминале. Компиляция программ
Лекция 3. Объявления и определения, области видимости, пространства имен
Лекция 4. Выражения и операторы. Управляющие конструкции
Лекция 5. Compile-time errors, runtime errors, undefined behavior
Лекция 6. Указатели
Лекция 7. Стековая, статическая и динамическая память
Лекция 8. Массивы, функции и указатели на функции
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 542 |
| 13 | Подход к реализации постоянных параметров шаблонов через библиотеку
Ранее эти параметры шаблонов назывались нетиповыми параметрами шаблонов (non-type template parameters). Но с момента появления C++98 у нас всегда было три вида параметров шаблонов:
- типовые параметры (type template parameters)
- нетиповые параметры (non-type template parameters)
- шаблонные параметры-шаблоны (template template parameters)
Когда категорий всего две, можно называть их «X» и «не-X» (например, статические и нестатические методы). Но когда категорий три — это уже неудобно. А в C++26 таких категорий уже пять (добавились параметры переменных шаблонов и параметры концептов), и выходит, что почти все, кроме типовых, попадают под «нетиповые» — что нелогично. Поэтому старый термин заменили на гораздо более удачный: constant template parameter (постоянный параметр шаблона).
Этот блогпост стал продолжением моей работы с Ричардом Смитом (P2484), за которым последовала ещё одна статья по теме (P3380). И статья, и доклад основывались на блестящей идее Файсала Вали: рефлексия может предложить интересное решение задачи сериализации, ведь std::meta::info способен представлять что угодно.
На встрече в Софии все документы, касающиеся рефлексии, были включены в рабочий проект стандарта C++26, и для меня это очень воодушевляюще — видеть формулировки прямо в черновике (например, meta.reflection).
Однако моё решение по расширению поддержки постоянных параметров шаблонов в C++26 не войдёт. Как и решение проблемы non-transient constexpr allocation. Так что ограничения на типы, которые можно использовать в качестве постоянных параметров шаблонов, сохранятся ещё на один цикл.
А может… и нет?
https://brevzin.github.io/c++/2025/08/02/ctp-reflection/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 061 |
| 14 | 🚀 Подборка полезных IT каналов в Max
Системное администрирование, DevOps 📌
https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин
Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак
1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика
Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика
Программирование React📌
https://max.ru/react_lib React
Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика
Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика
GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных
Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков
Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов
Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼💻👩💻
Шутки программистов 📌
https://max.ru/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free
Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров
Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике
Вакансии 📌
https://max.ru/progjob Вакансии в IT
Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных
Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП | 957 |
| 15 | Универсальная С++ фабрика объектов: для Qt и не только
Меня зовут Михаил Полукаров, я занимаюсь разработкой Desktop-версии корпоративного супераппа для совместной работы VK Teams.
Если вы тоже работали с большими проектами, где активно применяются объектно-ориентированные паттерны проектирования, то наверняка сталкивались с паттернами проектирования Factory Method или AbstractFactory. В процессе разработки я неоднократно ловил себя на мысли, что часто пишу однотипный код таких фабрик, и задумался о том, как можно было бы избежать таких самоповторений.
В этой статье я покажу, как сделать универсальную фабрику объектов, покрывающую большую часть потребностей, следующую принципам DRY (Don’t Repeat Yourself), а также как можно использовать некоторые «фишки» новых стандартов С++.
https://habr.com/ru/companies/vktech/articles/932358/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 204 |
| 16 | 🛡️ Clang Hardening Cheat Sheet: 10 лет спустя
Ровно 10 лет назад ребята из Quarkslab выпустили свою знаменитую шпаргалку по харденингу (усилению безопасности) бинарников с помощью Clang. За это время ландшафт угроз изменился до неузнаваемости, а сам компилятор обзавёлся мощнейшими механизмами защиты.
Разработчики обновили гайд под современные реалии. Вот ключевые выжимки и новые флаги, которые стоит внедрить в свои CI/CD пайплайны уже сегодня, если вы пишете на C/C++:
1. Безопасность памяти и проверки выходов за границы
• -D_GLIBCXX_ASSERTIONS — включает встроенные проверки в стандартной библиотеке C++ (например, контроль границ при обращении к элементам std::vector или std::string). Минимальный оверхед, огромная польза.
• -fstrict-flex-arrays=3 — ужесточает контроль за размерами гибких массивов в структурах, предотвращая популярные out-of-bounds уязвимости.
• -fstack-clash-protection — защита от атак типа Stack Clash. Компилятор генерирует код, который циклически "прощупывает" стек, не позволяя атакующему перепрыгнуть через защитную страницу (guard page).
2. Защита указателей и контроль потока выполнения (CFI)
Современный Clang делает упор на аппаратные фичи процессоров (особенно актуально для ARM64):
• -mbranch-protection=standard — включает одновременно PAC (Pointer Authentication Code) для подписи адресов возврата и BTI (Branch Target Identification) для предотвращения несанкционированных переходов. Это мощный барьер против ROP/JOP атак.
3. Очистка следов в памяти (Zeroing Registers)
• -fzero-call-used-regs=all-gpr — заставляет компилятор очищать (обнулять) универсальные регистры перед выходом из функции. Это предотвращает утечку конфиденциальных данных (например, криптографических ключей), которые могли остаться в регистрах после вычислений.
4. Ограничения линкера (Linker Flags)
Помимо классических -Wl,-z,relro и -Wl,-z,now, авторы рекомендуют:
• -Wl,-z,nodlopen — запрещает динамическую загрузку библиотеки через dlopen() во время выполнения (если архитектура приложения этого не требует).
• -Wl,-z,noexecstack — строго разграничивает права: стек только для данных, исполнение кода там запрещено.
5. Обновлённый FORTIFY_SOURCE
В современных версиях Clang механизм -D_FORTIFY_SOURCE=3 стал намного умнее благодаря встроенным функциям __builtin_dynamic_object_size. Теперь компилятор умеет проверять размеры буферов (в функциях вроде memcpy, snprintf, strtok) даже в тех случаях, когда размер выделяемой памяти становится известен только на этапе выполнения (runtime).
https://blog.quarkslab.com/clang-hardening-cheat-sheet-ten-years-later.html
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 136 |
| 17 | C++ изнутри: внутренние механизмы классов
Крис Райан — CppCon 2024
В своём докладе я рассмотрю внутренние механизмы C++ по следующим темам:
- "Луковица C++": как она соотносится с конструированием, уничтожением объектов и полиморфизмом;
- Порядок конструирования и уничтожения объектов, а также обработка до и после выполнения main();
- Указатели на функции-члены (это не те C-указатели на функции, что вы знали раньше);
- Указатели на данные-члены (не просто «сырые» указатели) и их "data-morphic" функциональность;
- Понимание стека вызовов, кадров стека и механизмов базового указателя (base pointer).
источник
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 053 |
| 18 | Dockerизированная toolchain в CLion с Conan
При разработке на C++ часто возникает необходимость воспроизводимой среды для сборки. Особенно если проект разрабатывается командой, где у каждого разработчика разные операционные системы и окружения. Тут на помощь приходит Docker.
Зачем это нужно?
- Единая среда для всех участников команды
- Изоляция от локальной системы
- Упрощение CI/CD
Интеграция с CLion
CLion поддерживает удалённые toolchain, включая Docker-контейнеры. То есть вы можете настроить сборку и отладку прямо в IDE, используя контейнер как основную среду.
Conan + Docker
Conan используется для управления зависимостями. Вместе с Docker это даёт:
- Контролируемую установку зависимостей
- Воспроизводимость билдов
- Возможность легко переключаться между разными окружениями
Краткие шаги настройки:
1. Создайте Docker-образ с нужными компиляторами и инструментами.
2. Настройте Toolchains в CLion, указав Docker как удалённую среду.
3. Подключите Conan для управления зависимостями.
4. Собирайте и отлаживайте проект прямо в контейнере.
Такой подход особенно полезен для кросс-платформенной разработки и больших командных проектов, где важна стабильность окружения.
https://schneide.blog/2025/06/23/dockerized-toolchain-in-clion-with-conan/
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 095 |
| 19 | FTXUI
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 092 |
| 20 | C++ Std:: string Interface Overview
📲 Мы в MAX
#cpp #programming
👉 @cpp_lib | 1 123 |
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
