0
考慮下一個循環一個循環內聲明的變量
for(int i = 0; i < 99999999; i++)
{
double d1 = (double)i/10;
double d2 = (double)i/100;
std::cout << d1 * d2 << std::endl;
}
據我所知,應用程序將分配和堆棧上的免費16個字節的內存(雙是8個字節我的機器上),每次迭代在循環中。這是真的,還是編譯器足夠聰明,知道只有在循環結束時才釋放內存?
問題是循環內部的變量聲明使代碼更具可讀性(imo)。
我想這夠聰明。 – Maroun
你意識到在堆棧上「分配」內存只是移動CPU的堆棧指針,對吧?但是,是的,編譯器幾乎可以肯定地爲整個事情執行一次堆棧調整,而不是每次迭代。檢查彙編器輸出是否確定。 –
您可以添加靜態。這將保證他們將被分配一次。 –