Можете ли вы установить размер стека вызовов в C ++? (VS2008) - PullRequest
1 голос
/ 09 марта 2009

Я работаю с примером кода, который выделяет относительно большой локальный массив. (32768, если быть точным) Когда я пытаюсь сделать то же самое, я получаю поведение, которое кажется переполнением стека. Теперь мне было интересно, если мой пример может установить стек больше, чем мое приложение. Это возможно? если да как?

Ответы [ 4 ]

3 голосов
/ 09 марта 2009

С помощью компилятора Microsoft вы можете использовать / F , чтобы установить размер стека, однако кажется, что вы должны просто выделить объект в куче. У вас должна быть причина, по которой вы размещаете это в стеке, а не в куче.

Редактировать: Эта страница дает хороший кросс-платформенный анализ, хотя он может быть датирован.

1 голос
/ 09 марта 2009

Вы можете использовать флаг компилятора / F для установки размера стека по умолчанию или указать его в качестве второго параметра для функции CreateThread .

0 голосов
/ 14 мая 2016

Вы можете создать новую тему для этой работы. Как правило, вы можете указать размер стека при создании потока и, конечно, с помощью CreateThread() function

vs2008.
0 голосов
/ 09 марта 2009

Вместо того, чтобы связываться с размером стека, почему бы вам просто не использовать std :: vector или даже не динамически распределять массив самостоятельно?

...