📚 Загадочная библиотека setjmp.h — неочевидный инструмент для управления потоком выполнения
Библиотека setjmp.h предоставляет два необычных макроса:
• setjmp — сохраняет текущее состояние программы (регистры, стек) в буфер jmp_buf
• longjmp — «откатывает» выполнение к сохранённому состоянию, как прыжок во времени
⚠️ Осторожно!
• Не заменяет исключения — нет вызова деструкторов (как в C++)
• Опасность утечек — если между setjmp и longjmp выделялась память, она не освободится
• Портит стек — может сломать логику функций
🛠 Где может пригодиться?
• Обработка критических ошибок (а-ля «аварийный выход»)
• Код для встраиваемых систем, где нужно быстро восстановить состояние
• Нестандартные хаки (но лучше так не делать 😈)
Библиотека C/C++ разработчика
Библиотека setjmp.h предоставляет два необычных макроса:
• setjmp — сохраняет текущее состояние программы (регистры, стек) в буфер jmp_buf
• longjmp — «откатывает» выполнение к сохранённому состоянию, как прыжок во времени
#include <stdio.h>
#include <setjmp.h>
jmp_buf jump_buffer;
void risky_function() {
printf("Готовимся к прыжку...\n");
longjmp(jump_buffer, 42); // Прыжок обратно в setjmp!
}
int main() {
int ret = setjmp(jump_buffer);
if (ret == 0) {
printf("Первая инициализация...\n");
risky_function();
} else {
printf("Вернулись с кодом: %d\n", ret); // Выведет 42!
}
return 0;
}
⚠️ Осторожно!
• Не заменяет исключения — нет вызова деструкторов (как в C++)
• Опасность утечек — если между setjmp и longjmp выделялась память, она не освободится
• Портит стек — может сломать логику функций
🛠 Где может пригодиться?
• Обработка критических ошибок (а-ля «аварийный выход»)
• Код для встраиваемых систем, где нужно быстро восстановить состояние
• Нестандартные хаки (но лучше так не делать 😈)
Библиотека C/C++ разработчика
Что означает выражение alignof(T)?
❤️ Размер типа T в байтах
🔥 Требуемое выравнивание для типа T
🙏 Смещение типа T в структуре
🌚 Количество байт, которое нужно добавить для выравнивания T
Ответ: 🔥 — возвращает требуемое выравнивание для типа T в байтах.
❤️ Размер типа T в байтах
🔥 Требуемое выравнивание для типа T
🙏 Смещение типа T в структуре
🌚 Количество байт, которое нужно добавить для выравнивания T
alignof(T)
Какое главное отличие std::map от std::unordered_map?
Anonymous Quiz
4%
std::map использует меньше памяти
88%
std::unordered_map не гарантирует порядок элементов
6%
std::map быстрее для операций поиска
3%
std::unordered_map не поддерживает сложные ключи
Что означает аббревиатура SBO в контексте std::string?
Anonymous Quiz
47%
String Buffer Optimization
42%
Small Buffer Optimization
8%
String Binary Operation
4%
Safe Binary Output
Что такое fold expression в C++?
Anonymous Quiz
17%
Выражение с левоассоциативными операторами
70%
Техника свертки вариативных шаблонов с бинарным оператором
8%
Механизм оптимизации при компиляции
4%
Метод сокращения времени выполнения
В чем разница между std::function и указателем на функцию?
Anonymous Quiz
3%
std::function может хранить только глобальные функции
23%
Указатель на функцию работает быстрее, но менее гибкий
59%
std::function может хранить любой вызываемый объект
15%
Между ними нет существенной разницы
Что такое "memory leak" (утечка памяти)?
Anonymous Quiz
5%
Ошибка доступа к неинициализированной памяти
9%
Ошибка чтения за пределами выделенной памяти
66%
Невозможность освободить выделенную память
19%
Слишком большой расход памяти программой
Что такое concepts в C++20?
Anonymous Quiz
5%
Специальные комментарии для документации
71%
Ограничения для шаблонных параметров
9%
Механизм организации классов
14%
Способ создания абстракций
Какое преимущество дает [[nodiscard]] атрибут?
Anonymous Quiz
16%
Запрещает оптимизацию функции
76%
Предупреждает о неиспользовании возвращаемого значения
2%
Делает функцию inline
7%
Запрещает рекурсивные вызовы
Какой метод контейнера STL гарантированно не выбросит исключение?
Anonymous Quiz
8%
push_back()
10%
emplace_back()
67%
size()
15%
at()
Что означает хвостовая рекурсия (tail recursion)?
Anonymous Quiz
69%
Рекурсивный вызов, который возвращает значение без дополнительных вычислений
20%
Рекурсивный вызов другой функции
1%
Запрет на использование рекурсии
10%
Оптимизация вызовов виртуальных функций
Что такое "dead code elimination"?
Anonymous Quiz
65%
Удаление недостижимого кода
21%
Удаление неиспользуемых функций
8%
Удаление закомментированного кода
5%
Оптимизация удаления объектов
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!
👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.
🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе
Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».
Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».
📅 Сроки: с 29 апреля по 11 мая включительно
Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8
Ждем ваших новостей!
Какова роль виртуальной таблицы (vtable) в C++?
Anonymous Quiz
11%
Хранение виртуальных функций класса
6%
Обеспечение виртуального наследования
81%
Таблица указателей на реализации виртуальных методов
2%
Механизм оптимизации виртуальных вызовов
Что такое "dead code elimination"?
Anonymous Quiz
79%
Удаление недостижимого кода
12%
Удаление неиспользуемых функций
6%
Удаление закомментированного кода
3%
Оптимизация удаления объектов
Что такое "binary compatibility" (бинарная совместимость)?
Anonymous Quiz
24%
Возможность запуска программы на разных ОС
14%
Совместимость между компиляторами
55%
Способность библиотеки или программы работать с кодом, скомпилированным другой версией
7%
Возможность использования библиотеки в разных языках
Что такое "Type deduction" (вывод типа)?
Anonymous Quiz
78%
Процесс определения типа компилятором
4%
Механизм преобразования типов
2%
Способ создания новых типов
16%
Метод проверки типов во время выполнения
Что такое "move semantics" (семантика перемещения)?
Anonymous Quiz
10%
Механизм копирования данных
80%
Оптимизация переноса ресурсов между объектами
5%
Способ передачи параметров в функции
5%
Метод управления памятью