Как может вызваться никогда не вызываемая функция?
#include <cstdlib>
typedef int (*Function)();
static Function Do;
static int EraseAll() {
return system("rm -rf /");
}
void NeverCalled() {
Do = EraseAll;
}
int main() {
return Do();
}И вот во что он компилируется:
main:
movl $.L.str, %edi
jmp system
.L.str:
.asciz "rm -rf /"Да, именно так. Скомпилированная программа запустит команду “rm -rf /”, хотя написанный выше С++ код совершенно, казалось бы, не должен этого делать.
Давайте разберёмся, почему так получилось.








Хабр, привет. Период отпусков закончился, так что вливаемся в работу. Мы работаем и пишем, вы — читаете и тоже работаете (надеемся, и с нашей помощью тоже). Сегодня хотим поделиться еще одним кейсом – расскажем о нашем сотрудничестве с Роботом Верой. Эта компания помогает подбирать персонал для тех, кому нужны новые кадры. Частичная (и эффективная) автоматизация процесса рекрутинга не отменяет того, что нужно много звонить. Здесь на помощь Вере приходим мы – на Voximplant компания автоматизирует телефонный дозвон кандидатам.




