Я работаю над примером кода, который выделяет относительно большой локальный массив. (32768, если быть точным) Когда я пытаюсь сделать то же самое, я получаю поведение, представляющее собой переполнение стека. Теперь мне было интересно, может ли мой пример установить стек больше, чем мое приложение. Это возможно? если да, то как?Можете ли вы установить размер стека вызовов в C++? (vs2008)
ответ
С помощью компилятора Microsoft вы можете использовать /F, чтобы установить размер стека, однако кажется, что вы должны просто выделить объект в куче. У вас должна быть причина, по которой вы выделяете это в стеке, а не в кучу.
Редактировать: This page дает хорошую кросс-платформенную разбивку, хотя она может быть датирована.
Это было очень полезно, хотя это не помогло решить проблему , Дальнейшее исследование необходимо :( –
Возможно, вам следует опубликовать образец вашего кода в новом вопросе. –
http://stackoverflow.com/questions/614842/why-does-this-code-corrupt-memory, уже ответил, но установил размер стека не устранил проблему, поэтому ваши мысли будут оценены –
Вместо того, чтобы испортить размер стека, почему бы вам просто не использовать std :: vector или даже динамически выделять массив самостоятельно?
Вы можете использовать флаг компилятора/F для установки размера стека по умолчанию или указать его как второй параметр функции CreateThread.
Вы можете создать новую тему для этой работы. Обычно вы можете указать размер стека при создании потока и, конечно же, с помощью функции CreateThread()
vs2008
- 1. «Максимальный размер стека вызовов» AnimationFrame
- 2. Можете ли размер стека динамически меняться - Как?
- 3. Можно ли удалить максимальный размер стека вызовов?
- 4. RangeError: Максимальный размер стека вызовов
- 5. Можете ли вы привести пример переполнения стека в C++?
- 6. Android: Увеличьте размер стека вызовов
- 7. Ошибка «Максимальный размер стека вызовов»
- 8. magnificpopup «Максимальный размер стека вызовов»
- 9. «максимальный размер стека вызовов превысил»
- 10. Telerik.Web.Ui - Максимальный размер стека вызовов
- 11. Почему вы можете установить размер стека на устройствах CUDA GPU с возможностью вычисления только 2.0+?
- 12. AJAX Максимальный размер стека вызовов
- 13. Размер стека вызовов быстрой сортировки
- 14. Максимальный размер стека вызовов превысил
- 15. Можете ли вы установить постоянный размер для JPanel внутри JFrame?
- 16. Размер стека вызовов в рекурсивных функциях: максимальный размер стека вызовов ниже ожидаемого
- 17. Ошибка jQuery - превышен максимальный размер стека вызовов
- 18. Libgdx Можете ли вы установить границы ScrollPane?
- 19. Количество вызовов, чтобы определить размер стека/очереди
- 20. Можете ли вы явно установить структуру/выравнивание структуры на C++, как вы можете на C#?
- 21. Максимальный размер стека вызовов превышен в mongodb
- 22. Максимальный размер стека вызовов превышен в nodejs
- 23. Максимальный размер стека вызовов превышен в Angular.js
- 24. Максимальный размер стека вызовов превышен в node.js
- 25. Можете ли вы помочь мне установить MinGW?
- 26. Можете ли вы изменить размер указателя на
- 27. Можете ли вы установить несколько компиляторов C++ в Windows?
- 28. Можете ли вы установить целочисленное значение null в C# 2.0?
- 29. Можете ли вы изменить размер массива C++ после инициализации?
- 30. Node.js + Socket.io Максимальный размер стека вызовов
Просто точка в семантике «стек вызовов» обычно относится к списку функций, составляющих контекст для вызова функции. Память, действительная для контекста вызова, - это просто стек. – RedBlueThing
На самом деле термин «стоп» является устаревшим термином. «Стек вызовов» охватывает весь контекст текущего вызова (то есть локальные переменные и параметры), см. Http://www.programmingforums.org/thread8786.html#9 –