Что верно про выделение памяти в Go?
Anonymous Quiz
31%
для небольших объектов (< 32 КБ) выделяется из стека
22%
для небольших объектов (< 32 КБ) выделяется из кэша, затем из стека
33%
для больших объектов (> 32 КБ) выделяется прямо из кучи
14%
для больших объектов (> 32 КБ) выделяется сначала из стека, затем из кучи
👍1
Какая строка приведет к ошибке компиляции?
Anonymous Quiz
20%
3
19%
6
20%
7
9%
8
16%
9
17%
ошибок нет
Что будет результатом выполнения кода?
Anonymous Quiz
27%
не скомпилируется
52%
скомпилируется но запаникует в рантайме
21%
скомпилируется и успешно отработает
👆Объяснение к предыдущему вопросу
👨🏻💻 Если тип T встраивает тип X, то T получает все методы X. В частности, если X является типом интерфейса, вложение заставляет T реализовать X. Программа скомпилируется, но в ходе выполнения выкинет панику с ошибкой переполнения стека.
Задачи и тесты по программированию
👨🏻💻 Если тип T встраивает тип X, то T получает все методы X. В частности, если X является типом интерфейса, вложение заставляет T реализовать X. Программа скомпилируется, но в ходе выполнения выкинет панику с ошибкой переполнения стека.
Задачи и тесты по программированию
Сколько раз вызовется любая move операция класса X?
Anonymous Quiz
31%
Хотя бы раз
29%
Хотя бы два раза
37%
Нисколько
4%
Хотя бы три раза
Что напечатает программа?
Anonymous Quiz
43%
42
28%
4242
9%
Неопределенное поведение
19%
Не скомпилируется
👆Пояснение к предыдущему вопросу
👨🏻💻 Так как функция
Условно, C++ не разрешает конвертацию в шаблонный тип, потому что не понимает какая конвертация должна совершиться, какую
Задачи и тесты по программированию | proghub
👨🏻💻 Так как функция
call_with
вызывается без шаблонов, компилятор попытается вывести тип T сам. Так как lambda не является std::function
, то внутренний тип вывестись не может, и компилятор должен выкинуть ошибку. Условно, C++ не разрешает конвертацию в шаблонный тип, потому что не понимает какая конвертация должна совершиться, какую
std::function<void(T)>
выбрать.Задачи и тесты по программированию | proghub
Укажите проблему написанного кода, которая приводит к невозможности исполнять данный код из предложенных вариантов
Anonymous Quiz
13%
Stop нигде не зовётся, PeriodicClosure никогда не завершит свою работу
25%
При создании Derived, Base не знает какую из DoSomething исполнять, что приведёт к datarace vptr
22%
Код не скомпилируется: this capture невозможна в виртуальных классах
13%
Отсутствует виртуальный деструктор, что приведёт к ошибке компиляции
13%
DoSomething в Derived помечена как virtual, код не скомпилируется, virual обязано быть в Base
16%
Код не скомпилируется, так как наследование в виртуальных классах обязано быть private
👆Пояснение к предыдущему вопросу
👨🏻💻 Это правда, что Stop может не позваться, но за Start может стоять специальная логика, которая может позвать Stop, это не самая важная проблема написанного кода. Самая важная -- при инициализации Derived, periodicclosure не знает, что исполнять, а так как vptr инициализируется после Base конструктора, но до конца Derived constructor, может случиться datarace https://stackoverflow.com/questions/6591859/when-does-the-vptr-pointing-to-vtable-get-initialized-for-a-polymorphic-class
Отсутствие виртуального деструктора тоже большая проблема, но она не приведёт к ошибке компиляции. Поэтому этот вариант выбирать не стоило. Остальные варианты разрешены стандартом.
Такие Race ловит ThreadSanitizer, см https://github.com/google/sanitizers/wiki/ThreadSanitizerPopularDataRaces#data-race-on-vptr-during-construction
Задачи и тесты по программированию | proghub
👨🏻💻 Это правда, что Stop может не позваться, но за Start может стоять специальная логика, которая может позвать Stop, это не самая важная проблема написанного кода. Самая важная -- при инициализации Derived, periodicclosure не знает, что исполнять, а так как vptr инициализируется после Base конструктора, но до конца Derived constructor, может случиться datarace https://stackoverflow.com/questions/6591859/when-does-the-vptr-pointing-to-vtable-get-initialized-for-a-polymorphic-class
Отсутствие виртуального деструктора тоже большая проблема, но она не приведёт к ошибке компиляции. Поэтому этот вариант выбирать не стоило. Остальные варианты разрешены стандартом.
Такие Race ловит ThreadSanitizer, см https://github.com/google/sanitizers/wiki/ThreadSanitizerPopularDataRaces#data-race-on-vptr-during-construction
Задачи и тесты по программированию | proghub