Aşağıdaki işlev verildiğinde, yerel değişkenlerin her biri yığında bildirilir mi? Bu durumda Koşullu Yığın Değişkenleri
std::string reallyCoolFunction(unsigned int a)
{
if(a < 20)
{
std::string result1 = "This function is really cool";
return result1;
}
if(a >=20 && a <= 40)
{
std::string result2 = "This function is kind of cool";
return result2;
}
if(a > 40)
{
std::string result3 = "This function is moderately cool";
return result3;
}
std::string result4 = "This function really isn't that cool";
return result4; // remove warning
}
, tek
std::string
aslında gereklidir, tüm 4 stack üzerinde alırım, yoksa sadece 1 ayrılan alır?
Cevabımda bahsetmeyi unuttuğum önemli bir parça var - gerçeği çoğunun Dize yığında ayrılmaz. Ben –
@IvayloStrandjev bahsetmeye değer olduğunu düşünüyorum Kesinlikle - Ben bu nedenle çok neden :) – dasblinkenlight
otomatik depolama garanti yığın davranış garanti etti. "yığın" ifadesi budur. "aslında" aslında oldukça acımasız bir kelimedir. otomatik bir değişken, yalnızca eğer kuralın altında en iyi duruma getirilerek yığına yerleştirilmekten kaçınılabilir ve sonra * bu, yığının üzerine tahsis edildiğinden, bu nedenle bu konuda büyük bir not oluşturmak için çok anlamlı değildir. –