std::aligned_alloc#опытнымalignas задает требования к выравниваю для типа или переменной. И компилятор, при размещении объектов на стеке слушает и повинуется этим правилам.Но, например, malloc следует только своим внутренним правилам. Он выравнивает адреса, но только по границе alignof(std::max_align_t]). Это 16 байт на современных десктопах.Что делать, если мне нужны более строгие требования к адресу? Например нужно выровнять выделенные на куче данные по границе 32, 64 или вообще по размеру страницы 4096 байт?Для этого используется С++17 функция aligned_alloc:void* aligned_alloc( std::size_t alignment, std::size_t size);где alignment - требования к выравниванию, а size - размер данных для аллокации в байтах. size должен быть кратным alignment. Функция выделяет просто size байт и не конструирует никаких объектов. Подразумевается также возможность выделить массив значений размером size/alignment, каждое из которых выравнено по границе alignment.Используется это в аллокаторах, если нужно учитывать выравнивание выделяемой памяти:template <typename T>T *allocate_aligned(size_t count) { if (count == 0) return nullptr; const size_t alignment = alignof(T); const size_t type_size = sizeof(T); const size_t total_bytes = count * type_size; char *raw_memory = static_cast<char *>(std::aligned_alloc(alignment, total_bytes)); if (!raw_memory) throw std::bad_alloc(); for (size_t constructed = 0; constructed < count; ++constructed) { new (raw_memory + (constructed * type_size)) T(); } return reinterpret_cast<T *>(raw_memory);}С аллокаторами тут полет фантазий может далеко увести, но суть такая: если нужна по-особенному выравненная динамическая память - используем std::aligned_alloc.Align yourself. Stay cool.#cppcore #cpp17 #compiler
Грокаем C++
@grokaemcpp · 9.3K подписчиков
Посты канала Грокаем C++ в SillyFeed: единая лента публичных Telegram-каналов со ссылками на оригиналы.
Два сеньора C++ - Владимир и Денис - отныне ваши гиды в этом дремучем мире плюсов.По всем вопросам (+ реклама)@ninjatelegrammМенеджер:@Spiral_YuriРеклама:https://telega.in/c/grokaemcppМы на TGstat:https://tgstat.ru/channel/@grokaemcpp/stat
Посты канала
union class#опытным В прошлом посте мы упомянули, что union - это такой специальный класс. Это что значит, объединение может иметь методы?Представьте себе, да!Начиная с С++11 union'ы могут иметь полноценные конструкторы, деструкторы и другие методы.Но есть ограничения:👉🏿 не должно быть виртуальных методов👉🏿 юнион не может быть наследником👉🏿 юнион не может быть базовым классом👉🏿 юнион не может хранить ссылочные типыВо всем остальном - такой же класс!Но вот как-то не можется мне придумать юзкейсы методов объединения.Конструкторы и деструкторы нужны, чтобы union мог хранить объекты классов с нетривиальными дефолтными конструкторами и деструкторами.Например:union U { int i; float f; std::string s;};U u;Попытка скомпилировать это дело приведет к ошибкам:error: use of deleted function 'U::U()'error: union member 'U::s' with non-trivial 'constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string() requires is_default_constructible_v<_Alloc> error: use of deleted function 'U::~U()'error: union member 'U::s' with non-trivial 'constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::~basic_string()Плюс объекты хочется перемещать и мувать, там тоже могут быть нетривиальные специальные методы.union U { U() {} ~U() {} int i; float f; std::string s;};U u; // ОКНу а если уж разрешили специальные методы определять, то и обычные разрешили до кучи.А вы используете методы объединений в своих проектах? Если да, то расскажите зачем оно может понадобиться, будет интересно.Expand your horizons. Stay cool.#cppcore #cpp11
Квиз#новичкамБуквально на секундочку вернемся к теме пользовательских литералов.Со строковыми литералами всегда какая-то беда происходит. То тип путает карты, то этот null-terminator комом в горле встает, то чтобы вычислить длину надо быть кмс по приседаниям.Но в комбинации с пользовательскими операторами может получиться такая кракозябра, что фиг разберешь.А разбирать надо для понимания процессов. Поэтому сегодня проверим ваши интуицию/знания в рамках небольшого #quiz 'а.Какой результат попытки компиляции и запуска кода ниже под С++23?#include <iostream>#include <iomanip>#include <type_traits>#include <cmath> int operator ""_length(const char*, std::size_t length) { return length; }int main(){ auto s = "A" "B"_length "C" "D" "E" "FGH"; std::cout << s << "\n";}
Ещё по теме «Технологии»
ТехнологииУПРАВЛЕНИЕ 2026: ПОЧЕМУ ВАШ БИЗНЕС ВСЕ ЕЩЕ НА «РУЧНОМ ПРИВОДЕ»? 🧠Главное «бутылочное горлышко» компании — не рынок, не сотрудники и не конкуренты.Главное бутылочное горлышко — сам собственник.Пока вы лично выясняете, где застряла задача, почему просела маржа и кто не дожал клиента — бизнес не управляется. Он просто держится на вашей нервной системе. В 2026 году контроль через таблицы и бесконечные планерки — это дорогой анахронизм.Сегодня бизнесу нужны не «чат-боты». Ему нужны цифровые сотрудники, закрывающие ключевые управленческие узлы:1️⃣ ИИ-Финдиректор (CFO)Следит за деньгами в реальном времени. Не просто считает остатки, а видит кассовые разрывы, скрытые утечки и моделирует сценарии: «Что будет с прибылью, если мы поднимем цены на 5% или наберем команду?»• Результат: Прозрачный капитал 24/7 без искажений от бухгалтерии.2️⃣ ИИ-Директор по продажам (AI-ROP)Ключевой узел роста. Обычно мы начинаем внедрение именно здесь, выстраивая эталонные бизнес-процессы. Система контролирует качество обработки каждой заявки на каждом этапе воронки. ИИ анализирует 100% звонков и переписок, следит за чистотой базы клиентов и не дает «забыть» ни одного лида. Это тотальный контроль дисциплины и качества выполнения бизнес-процессов, который заставляет каждого продавца работать на 5+. Фокус на действия, реально ведущие к деньгам и устранение ИБД (имитация бурной деятельности) продавцов. • Результат: Кратное увеличение оборота за счет того, что система «дожимает» результат там, где раньше был человеческий фактор.3️⃣ ИИ-Проджект-менеджер (PM)Следит за сроками и приоритетами. Он видит, что реально движется, а что зависло, и подсвечивает риски до того, как проблема стала пожаром. • Результат: Соблюдение дедлайнов без микроменеджмента и вечного «ну что там?».4️⃣ ИИ-Оркестратор — «Второй мозг» собственникаВерхний уровень. Он связывает стратегию, деньги и команду в единый контур. Превращает ваши идеи в конкретные действия и контролирует финальный результат в деньгах.ГДЕ ЛОВУШКА? 🪤Рынок переполнен ИИ-игрушками. Предприниматели внедряют один сервис для задач, второй для отчетов — и получают «зоопарк ИИ». Инструментов больше, а хаоса — еще больше.НАШЕ ПРЕДЛОЖЕНИЕ:Мы не продаем софт. Мы внедряем Цифровую Операционную Систему Управления.• Полный аудит процессов и точек потери прибыли.• Развертывание связки ИИ-агентов (с фокусом на кратный рост продаж).• Создание единой панели управления для собственника.Цель: Убрать ручной контроль и дать вам реальную картину бизнеса без фильтров от сотрудников. Ориентир: +30% к чистой прибыли за счет ликвидации потерь и автоматизации рутины.————————Вопрос к вам:Какой узел сейчас сильнее всего тормозит ваш рост?🔹 Финансы и кассовые разрывы?🔹 Продажи и качество работы продавцов?🔹 Контроль задач и сроки?🔹 Или ваш личный фокус, съеденный операционкой?Записывайтесь на бесплатный экспресс-аудит вашего бизнеса:👉 @Mikhail_Gerasimov
❔ Как правильно форматировать числа в JSIntl.NumberFormat помогает форматировать числа под конкретную локаль: с правильными разделителями, символами валют и единицами измерения.Вместо ручной склейки строк можно использовать встроенный API:new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR"}).format(123456789);// 123.456.789,00 €new Intl.NumberFormat("pt-PT", { style: "unit", unit: "kilometer-per-hour"}).format(50);// 50 km/hnew Intl.NumberFormat("fr-FR", { style: "unit", unit: "kilobyte", unitDisplay: "long"}).format(123456);// 123 456 kilooctets↖️ Что это даёт:— формат под локаль— корректные разделители— валюты без ручной склейки— единицы измерения из коробки📍 Навигация: [Вакансии]🐸 Библиотека фронтендера#readme #js
Создание словаря из набора ключейДля создания словаря из известного набора ключей и одинаковых значений часто используют генераторы словарей (dict comprehensions).Однако класс dict имеет удобный метод fromkeys, который был создан специально для таких случаев.📲 Мы в MAXПодписывайтесь на канал 👉@pythonofff
Как делать классный дизайн с Claude CodeНе надо писать «Ты Джонни Айв» или «сделай как у Apple»Вместо этого — даёте ему готовый DESIGN.md файл, где уже описано всё, что обычно формулируют размыто:— цвета— типографика— отступы— правила компонентовНашел подборку 2000+ DESIGN.md файлов топовых сайтовВыбираете тот, который нравится, вставляете в свой Клод или Кодекс — и получаете классный дизайнhttps://styles.refero.designUPD: в комментах подсказывают еще опцииhttps://getdesign.mdhttps://impeccable.style
Всю первую половину дня в Москве был заблокирован мобильный интернет. Я прочитал о предстоящей блокировке в новостях ещё вчера, но не придал этому значения. Вышел из дома и быстро понял, что всё не так, как обычно. Сначала не открылась карта транспорта в телефоне, и я ждал на остановке автобус, не зная, когда он придёт. Затем у меня не загрузился мобильный банк, и не получилось расплатиться в автомате метро через систему быстрых платежей. Расписание электричек тоже было недоступно. Подобные злоключения то и дело преследовали меня до того времени, пока мобильный интернет не заработал. Конечно, за последние десять-пятнадцать лет мы привыкли к электронному комфорту, и интернет стал нашим незаменимым спутником. Мы уверены, что так будет всегда. Но сегодняшний день показал всю зыбкость наших привычек. Обстановка в мире, увы, неспокойная, и дальше будет ещё сложнее. Нам надо быть готовыми к тому, что, возможно, придётся жить без интернета не полдня, как сегодня, а неделями и даже месяцами. И тогда мы на некоторое время вернёмся к бумажным книгам, проводным телефонам, а может быть, и письма будем писать ручкой на бумаге, запечатывать их в конверты и бросать в почтовые ящики. Дети станут играть у подъезда в классики, резиночку и прыгать со скакалкой. Кстати, сегодня у меня была с собой в портфеле книжка, и я за то время, что не работал интернет, дочитал её до конца.
Кто найдёт в этом ролике «действия сексуального характера без обоюдного согласия» закину 1000 токенов на СинтексПоясняю - только что ютуб снёс мне этот ролик годичной давности по причине, которую написал выше.Подал апелляцию - сказали НЕ, всё равно видим элементы секса.Тут даже борцы за традиционные ценности проржали
Слушайте, я стал меньше писать полезных вещей, потому что занят тем, что, как маленький ребенок, реализую все штуки, которые всю жизнь хотел реализовать.Например, свой трекер.Я много раз пытался пользоваться готовыми: один быстрый, второй удобный, третий красиво выглядит. Но когда нужно быстро скинуть мысль, разобрать её, привязать к проекту, не потерять контекст и потом вспомнить, что я вообще хотел сделать, всё превращалось в ручную возню.А ручная возня — это ровно то, от чего таск-трекер обычно и умирает.Поэтому я собрал свою версию: inbox-first трекер. Я пишу обычным языком, система кладёт всё во входящие, разбирает через LLM и предлагает карточки на review. Из одного куска текста могут получиться задача, заметка, напоминание или несколько объектов сразу.Сейчас уже есть Web/PWA, inbox, разбор через OpenRouter с fallback на обычный parser, задачи, заметки, напоминания, области, проекты, уведомления, browser push, Telegram-уведомления, API для внешней постановки задач и публичная ссылка, которую можно дать человеку.Дальше хочу довести то, ради чего всё это и затевалось: голосовой ввод, постановку через Телеграмм, пересланные сообщения, нормальное сжатие, исправление формулировок и автоопределение проекта, области, срочности и важности.Короче, делаю трекер для людей, которые не хотят вести трекер. Кажется, это ровно мой случай.
💬Цифровые наблюдения из СмоленскаНа сотовой связи блочится всё кроме Макса, Мэйла, банков и т.п.На вай-фае, если на телефоне запущен Макс и висит в фоне, всё блочится: и прокси, и то, что нельзя называть вслух. Если Макс выгрузить, тогда всё начинает работать...
Налог на жизнь и цифровой занавес. Часть 2.Отдельный эффект этих ограничений проявляется не сразу, а через структуру самого бизнеса. Малый предприниматель в цифровой среде всегда работал за счет скорости и низких издержек: быстро протестировал продукт, быстро получил трафик, быстро масштабировался или закрылся без больших потерь. Ограничения эту логику ломают.Когда доступ к каналам становится нестабильным, бизнес теряет главное преимущество — гибкость. Любая гипотеза теперь стоит дороже, тестируется дольше и дает менее предсказуемый результат. Это означает, что часть новых проектов просто не запускается. Не потому что нет идей или спроса, а потому что вход в рынок становится слишком дорогим и рискованным.И это уже видно в цифрах. В 2025 году в России было зарегистрировано около 173 тыс. новых юрлиц — на ~20% меньше, чем годом ранее, при этом ликвидаций — около 233 тыс., то есть закрытий на треть больше, чем открытий. Это минимальные показатели «рождаемости» бизнеса за более чем десятилетие. Поток новых игроков сокращается не из-за отсутствия идей, а из-за ухудшения условий входа.Отсюда возникает первый системный слой — снижение предпринимательской активности. Если раньше цифровая среда постоянно генерировала новые проекты за счёт низкого порога входа, то при росте барьеров этот механизм перестаёт работать.Второй слой — деградация бизнес-моделей. Когда нормальный трафик недоступен или дорог, предприниматель начинает искать обходные решения: дробит каналы, уходит в закрытые группы, переводит коммуникацию в менее удобные форматы. Это снижает масштабируемость. Бизнес остается «на плаву», но перестает расти. Экономика получает не развитие, а консервацию.При этом стоимость привлечения клиента уже растет. После ограничений рекламы в Instagram* рынок столкнулся с удорожанием трафика, а сами платформы перестали давать прежний охват. Telegram, который стал ключевой альтернативой, показывает обратную динамику: при аудитории более 94 млн человек месячного охвата среднее время использования уже снизилось с 44 до 34 минут в сутки. Это означает прямое падение вовлеченности и эффективности каналов.Третий слой — потеря внешнего спроса. Для части МСП цифровые платформы были способом работать с зарубежной аудиторией: услуги, обучение, контент, продажи. При ограничении доступа и нестабильности каналов этот сегмент автоматически схлопывается. Бизнес замыкается на внутреннем рынке, где спрос и так ограничен.Четвертый слой — перераспределение выручки. Когда малый бизнес теряет прямой доступ к клиенту, его доля уходит посредникам. Уже сейчас на маркетплейсы приходится около 80% заказов в e-commerce, а доля крупных платформ продолжает расти. Это означает не просто зависимость, а потерю маржи: комиссии, логистика, продвижение съедают значительную часть выручки.В сумме это дает системный результат.Меньше новых бизнесов.Меньше масштабирования.Меньше выхода на внешние рынки.Больше зависимости от крупных платформ.Если эту динамику продолжить на горизонт 2027–2030 годов, картина становится ещё жестче. Ограничение VPN до заявленных 92%, рост стоимости обхода и дальнейшее ужесточение инфраструктуры приведут к тому, что цифровая среда перестанет выполнять роль «ускорителя» экономики. Она станет фильтром.Часть бизнеса уйдет на платформы и потеряет маржу. Часть уйдет в серую зону и потеряет эффективность. Часть просто закроется. И это происходит на фоне роста затрат на саму систему ограничений: только в 2026 году финансирование инфраструктуры блокировок увеличено до 83,7 млрд рублей, а к 2030 году мощность системы планируется нарастить в 2,5 раза.Именно в этом главный эффект ограничений. Они не «закрывают» экономику мгновенно. Они делают ее медленно неэффективной. Настолько, что со временем рост становится исключением, а не нормой.* Деятельность запрещена в России, сервисы принадлежат компании Meta, признанной в РФ экстремистской организацией@naebrosh
Основатель Revolut получит $80 млрд. Wildberries строит IT-империюЧто это значит для васRevolut хочет вырасти с $75 до $200 млрд к 2028 году. Wildberries создал собственный аналог Jira за сотни миллионов рублей. Казалось бы - две разные истории из разных миров, но если смотреть глазами инвестора - обе про одно и то же.Про то, кто строит систему - а кто реагирует на обстоятельства.Revolut. IPO не раньше 2028-го, оценка должна вырасти вдвое. Звучит амбициозно - но вот деталь, которую важно не пропустить. У основателя Сторонского мотивационная программа завязана на росте капитализации. Если оценка дойдёт до $200 млрд - его доля вырастет до 40%, около $80 млрд. Это не просто красивая цифра, а это означает, что основатель лично заинтересован в том же, в чём заинтересованы инвесторы. Интересы совпадают - и это один из главных признаков актива, за которым стоит следить.Wildberries. Вложили сотни миллионов рублей в собственную платформу для проектного управления - и судя по удалённой вакансии, думали выводить её на рынок. Пока не вывели. Но сам факт говорит о стратегии: WB последовательно строит собственную технологическую инфраструктуру вместо того чтобы зависеть от внешних сервисов. Каждый такой шаг снижает операционные риски и создаёт актив внутри экосистемы.Про венчур и что эти цифры значат для вашего портфеля - разберу в следующем посте. Там есть один неочевидный вывод, который меняет взгляд на весь рынок.Напишите в комментариях: какая из двух историй кажется вам интереснее с инвестиционной точки зрения - Revolut или WB?#разбор #цифры #стратегия