Ich verwende Visual Studio 2010
mit Code Analysis
aktiviert. In meinem Code gibt es eine Zeile etwas Speicher in einer Funktion Zuweisung:Warnmeldung bezüglich Stapelgröße
TCHAR someString[40000];
Die Codeanalyse wirft eine Warnmeldung:
Warnung C6262: Funktion '40000' Bytes Stack verwendet: überschreitet/analysieren: stacksize'16384 '. Betrachten Sie einige Daten in den Heap
Ich frage mich, ob ich die Warnung ernst nehmen sollte. Muss ich einige echte Probleme haben, wenn ich etwas Speicher auf dem Stack> 16384 zuteile? Oder ist es nur eine allgemeine Warnmeldung, die mich daran erinnert, dass ich generell auf meine Stackgröße achten muss? Soweit ich weiß, ist die Standard-Stack-Größe 1 MB (wenn Sie Visual Studio verwenden).
Ich habe keine Probleme damit – Quest
Wenn diese Funktion keine Rekursion verwendet und ist die einzige Funktion, die viel Stapelspeicher zuweist, sollte es in Ordnung sein. Trotzdem sollten Sie es in Betracht ziehen, es für alle Fälle auf den Heap zu verschieben. – Kelm
@MichaelXanadu: Es gibt eine gute Erklärung dazu auf der MSDN-Seite: http://msdn.microsoft.com/en-us/library/7yhee2f0.aspx. Auf dieser Seite wurde vorgeschlagen, Raw-Heap-Speicher oder besser STL-Container zu verwenden als std :: string std :: vector in diesem Fall. –