Переполнение стека?
Термин переполнение стека относится к ситуации, когда размер стека пытается выйти за пределы максимального предела, допустимого текущей платформой и / или конфигурацией.То, что вы пытаетесь сделать, не имеет никакого отношения к переполнению стека.Если вы хотите увидеть переполнение стека, напишите бесконечно рекурсивную функцию, выполните ее и просто подождите, пока она не переполнится:
void foo() {
foo();
}
(надеясь, что компилятор не оптимизирует хвостовую рекурсию в цикл. Если это произойдет, сделайте его немного сложнее, не хвостовой рекурсивностью.)
То, что вы, похоже, пытаетесь сделать, это воспроизвести печально известный переполнение буфера эксплойт.Хотя предполагается, что рассматриваемый буфер размещен в стеке, эксплойт никогда не назывался «переполнением стека».Чтобы на самом деле продемонстрировать эксплойт, недостаточно просто выйти за границы некоторого буфера.Все дело в том, чтобы установить заранее определенное значение в области стека, изначально занятой сохраненным адресом возврата, чтобы после завершения функции она «возвращалась» к другому (предположительно вредоносному) коду вместо исходного вызывающего кода..
Итак, что вы пытаетесь сделать?Переполнение стека?Или переполнение буфера?