Простая и интересная задачка по C++

Всем привет, я сам ещё новичок в C++(< 2 лет изучаю), но уже что-то понимаю и решил сделать задачу на основы языка для совсем зелёных, для решения из C++ вам нужно будет знать функции, cout и указатели.


Итак, задача:

Дан следующий код: http://pastebin.com/5ehUmhZB


Результат его выполнения:

Hello, World
secret function 42

Вопросы:

1 Почему выводится secret function 42, если вызывается только printHelloWorld(); 

2 Откуда взялось число 42?


Подсказки:

1 Не потому что 42 - это ответ на «главный вопрос Жизни, Вселенной и Всего Остального»

2 На других архитектурах и компиляторах результат может быть другим, я компилил в linux gcc 5.4.0 x64


P.S. Если не верите, можете убедиться сами https://www.tutorialspoint.com/viewproject.php?URL=compile_cpp_online.php&PID=0Bw_CjBb95KQMTW9WaTliUXRqc1U

Лига программистов C/C++

63 поста4.8K подписчиков

Добавить пост

Правила сообщества

Соблюдайте правила Pikabu:

https://pikabu.ru/html.php?id=wtf


Помимо этого ЗАПРЕЩЕНО:

- Размещать в сообществе посты стиля "Подскажите как удалить вирус", "Подскажите как установить программу", "Подскажите как починить монитор/телевизор/мышь/тостер/стиральную машину" или "Напишите за меня лабу в универ". Пожалуйста размещайте такие посты вне этого сообщества или в соответствующих для этого сообществах.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
Я конечно понимаю, что буду выглядеть как школьник, который на уроке математики спрашивает, а как это применить в реальной жизни, но все же спрошу. А накой ля так извиваться? Да и не надо это новичкам, каковым я себя считаю. Для нас лучше пока использовать shared_ptr, auto, и что-то попроще, а не извиваться с памятью и стеком.
раскрыть ветку (2)
Автор поста оценил этот комментарий
Вы правы на счёт того, что использовать такое в рабочем коде не стоит, и надо было об этом написать в посте. А пример просто для демонстрации того, что такое возможно. Единственное логичное применение подобных извращений - написание вредоносных программ или взлом, раньше часто взламывали программы, подавая на вход больше символов чем нужно, допустим если массив размещён на стеке и выход за границы не контролируется, то можно таким же образом записать нужный код и программа либо упадёт либо сделает не то, что нужно было.

А на счёт shared_ptr, его тоже нужно понимать и везде пихать его не стоит, в некоторых случаях нужен unique_ptr или weak_ptr.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Нуу пока для меня разница между unique_ptr и shared_ptr лишь в их доступности. А про weak_ptr я узнал только сейчас 😀
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку