Предупреждение о размере стека

я использую Visual Studio 2010 с Code Analysis активируется. В моем коде есть строка, выделяющая некоторую память в функции:

TCHAR someString[40000];

Анализ кода выдает предупреждение:

предупреждение C6262: функция использует «40000» байтов стека: превышает / анализирует: размер стека «16384». Рассмотрите возможность перемещения некоторых данных в кучу

Интересно, должен ли я принять предупреждение серьезно? Должен ли я столкнуться с какими-то реальными проблемами, если я выделю некоторую память в стеке> 16384? Или это просто общее предупреждающее сообщение, которое напоминает мне, что я должен заботиться о размере своего стека в целом? Насколько я знаю, размер стека по умолчанию составляет 1 МБ (если вы используете Visual Studio).

8

Решение

Следует признать, что это сообщение может сбивать с толку, поскольку VS (свойства проекта) действительно сообщает, что по умолчанию установлено значение 1M. Однако, если вы посмотрите на текст предупреждение, Вы заметите, что на самом деле ограничение для анализа кода составляет 16 КБ. Следуйте инструкциям внизу этой ссылки, чтобы исправить предупреждение.

6

Другие решения

Я обнаружил, что к таким предупреждениям следует относиться серьезно.
У меня была декларация

{ // some local branch deep inside a function
char T[2000000];
...
}

оставил по ошибке где-то глубоко внутри большой функции. Функция всегда вылетала сразу после входа в функцию, даже если объявление в локальной ветке было далеко, и я так и не попал туда с отладчиком.
Это было трудно найти в MS Visual Studio, даже когда анализ кода дал мне предупреждение.

1

По вопросам рекламы [email protected]