Можете ли вы установить размер стека вызовов в C ++? (VS2008)
Вопрос
Я работаю над примером кода, который выделяет относительно большой локальный массив. (32768, если быть точным) Когда я пытаюсь сделать то же самое, я получаю поведение, которое кажется переполнением стека. Теперь мне было интересно, если мой пример может установить стек больше, чем мое приложение. Это возможно? если так как?
Решение
С помощью компилятора Microsoft вы можете использовать / F , чтобы установить размер стека, однако кажется, что вы должны просто выделить объект в куче. У вас должна быть причина, по которой вы размещаете это в стеке, а не в куче.
Изменить: Эта страница дает хороший перекрестный обзор. поломка платформы, хотя она может быть датирована.
Другие советы
Вы можете использовать флаг компилятора / F для установки размера стека по умолчанию или указать его в качестве второго параметра для функция CreateThread .
Вместо того, чтобы связываться с размером стека, почему бы вам просто не использовать std :: vector или даже не динамически выделять массив самостоятельно?
Вы можете создать новую тему для этой работы. Как правило, вы можете указать размер стека при создании потока, и, конечно, с помощью функции CreateThread ()
v / 2008