( Chain-Q | 2022. 07. 25., h – 15:13 )

Ez teljesen normális C stack működés. Ahogy fent is írtam, a block variable scope csak szintaktikai cukorka, a változó attól még a függvényhez tartozik, és nem a blokkhoz. A stackframe-et mindig csak a függvénybe belépéskor ill. kilépéskor számolja újra a fordító. Szóval ha nem akarod hogy az array-ed a mainben folyamatosan foglaljon, akkor a teljesen unrelated dolgot tedd ki függvénybe és hívd meg úgy. Azért van, arra találták ki az ilyesmit, hogy struktúrált programozás...

Ha Thumb-ot programozol, akkor ami miatt előfordulhat mégis hogy ez "jól működik" (szerinted) az teljesen véletlenszerű és igazából csak a processzor limitációinak mellékhatása. A Thumb utasításkészlet nagyon limitált, ha egy-egy függvény "túl nagyra" nő, vagy túl nagy lesz a lokális változók mérete, akkor a fordítók belül hajlamosak a függvényt láthatatlanul szétszedni több kisebb automatán generált függvényre belül, hogy egyáltalán le bírják fordítani Thumb-ra. Ekkor valóban többször számolódhat a stackframe, de ez csak a Thumb utasításkészlet korlátai miatt van így, nem azért mert a C nyelv szerint így kéne működnie.