Im Anschluss an eine previous question here Ich habe die Ausgabe von der VS2015-Code-Analyse und sehen Sie eine Warnung für hohe Stack-Nutzung in einer Funktion, die wie folgt vereinfacht werden kann;Sind Stack-Frames mit Scope zugeordnet und freigegeben?
class base
{
public:
virtual void Process();
Buffer[10000];
};
class derived1 : public base
{
public:
void Process();
}
class derived2 : public base
{
public:
void Process();
}
void MyFunc(int x)
{
switch(x)
{
case 0:
{
derived1 x;
x.Process();
} break;
case 1:
{
derived2 y;
y.Process();
} break;
}
}
Die Analyse warnt mich, dass ich in MyFunc
20.000 Bytes Stack bin mit. Ist dies der Fall, da alle Stack-Variablen beim Funktionseingang zugewiesen und beim Funktionsexit nicht zugewiesen werden, statt dass sie mit Scope konstruiert und zerstört werden? Nur neugierig (aber nicht so neugierig genug, um durch die Assembly-Ausgabe zu waten;)) Eine related question hier gibt mir nicht die richtige Antwort, die ich suche.
Hängt vom Compiler und seinen Optimierungen ab. Dies ist nicht direkt vom Standard vorgeschrieben. – Mat