Сколько функций для создания stackoverflow? - PullRequest
0 голосов
/ 28 февраля 2012

В Windows XP с использованием Visual C ++ с 2 ГБ ОЗУ, сколько функций должно быть в стеке одновременно, чтобы создать переполнение стека? (т.е. в рекурсивных функциях)

Есть ли простой способ рассчитать это для других подобных ситуаций?

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

Нет способа узнать только из компилятора.Переполнение стека происходит из-за переполнения стека.Размер стека увеличивается в зависимости от аргументов, принимаемых функцией, локальных переменных, используемых функцией, и оптимизации компилятора.Я полагаю, что есть даже некоторые функции C99, которые будут выделять пространство непосредственно из стека.

Предел размера стека определяется переключателем compiler , а не тем, сколько у вас оперативной памяти.компьютер.Поэтому, сколько вызовов требуется для переполнения, больше связано с настройками компилятора, чем с вашей памятью.

Это не то, что вы можете определить априори.По крайней мере, нетривиально.

0 голосов
/ 28 февраля 2012

Вы можете попробовать бесконечную рекурсию. Это одна из распространенных причин переполнения стека.

int f() { g(); } int g() { f(); }

...