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