Wpis z mikrobloga

@VanQator: Kompilator zobaczy, że zmienna i jest nieużywana w ogóle, więc ją zoptymalizuje, ale gdybyś dał volatile to by tego nie zrobił i alokował pamięć na nią na stosie za każdym razem.
@VanQator: wystarczy wiedzieć jaki jest wskaźnik na stos na poziomie funkcji i nie jest on przesuwany. za to jak odwołujesz się do zmiennej na stosie, to odwołujesz się przez offset do tego wcześniej zasetowanego wskaźnika stosu na początku funkcji. ale kompilator może sobie uznać, że jeżeli zmienna byłaby często używana, to miałaby szybszy dostęp z rejestru. tutaj nie jest nigdzie używana, więc nigdy offset do niej nie zostanie wykorzystany. a skoro
@VanQator: warto używać tej stronki do podglądania wygenerowanego kodu https://gcc.godbolt.org/. W tym przypadku jak włączysz optymalizację to tej zmiennej nie będzie, bo kompilator wykryje, że jest nie nieużywana.

zarezerwowanie offsetu np. na stosie dla wielkości danego typu, co w przypadku c++ oznacza wykonanie jednej instrukcji maszynowej procesora (w przypadku bardziej złożonych obiektów, alokacja jest bardziej skomplikowana)


@VanQator: koszt alokacji na stosie nie jest związany z liczbą zmiennych. Jedyny koszt stosu