Оба связаны с pointer provenance и strict aliasing, но решают разные проблемы.
Когда компилятор «знает» значение через const member или reference, он может закешировать его:
struct S { const int x; };
S* p = new (addr) S{42};
p->x; // Компилятор: "всегда 42"
new (p) S{100}; // Переиспользуем память
p->x; // Всё ещё 42? Нет, но компилятор так думает!
auto q = std::launder(p);
q->x; // Правильно: 100launder заставляет компилятор перечитать значение из памяти, игнорируя предыдущие предположения.Он нужен когда объекта физически нет, но память готова:
alignas(int) char buffer[sizeof(int)];
*reinterpret_cast<int*>(buffer) = 42; // UB: нет объекта
int* p = std::start_lifetime_as<int>(buffer);
*p = 42; // OK: объект создан
launder — для существующих объектов с переписанной памятью. start_lifetime_as — для памяти, которая станет объектом.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2👍2👾1
😎 Топ-вакансий для C++ разработчиков за неделю
С++ разработчик — от 300 000 и до 350 000 ₽ Удалёнка
C developer (MES) — Офис (Новосибирск)
Middle C Developer — от 250 000 ₽ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
С++ разработчик — от 300 000 и до 350 000 ₽ Удалёнка
C developer (MES) — Офис (Новосибирск)
Middle C Developer — от 250 000 ₽ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
😁2
😼 Коротко о выравнивании в C++
💡 Автор статьи от PVS-Studio детально разбирает, как компилятор на самом деле размещает данные в памяти и почему это критично для производительности.
❗ Ключевые моменты статьи:
• естественное выравнивание и паддинги между переменными
• влияние порядка полей в структурах на итоговый размер
• директива #pragma pack и её опасные последствия
• alignas, alignof и компиляторо-специфичные атрибуты
Основной фокус — практические примеры расположения данных в памяти с детальными схемами и сравнением поведения MSVC и Clang.
Вы узнаете, что один и тот же код может занимать разное количество памяти в зависимости от порядка объявления полей, а неправильное использование
👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
💡 Автор статьи от PVS-Studio детально разбирает, как компилятор на самом деле размещает данные в памяти и почему это критично для производительности.
❗ Ключевые моменты статьи:
• естественное выравнивание и паддинги между переменными
• влияние порядка полей в структурах на итоговый размер
• директива #pragma pack и её опасные последствия
• alignas, alignof и компиляторо-специфичные атрибуты
Основной фокус — практические примеры расположения данных в памяти с детальными схемами и сравнением поведения MSVC и Clang.
Вы узнаете, что один и тот же код может занимать разное количество памяти в зависимости от порядка объявления полей, а неправильное использование
#pragma pack может привести к аппаратным прерываниям на ARM архитектуре вместо ожидаемой экономии памяти.👉 Статья
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
👍7