局部變量地址高低與定義順序問題

印象中,在一個函數(shù)里定義的局部變量,先定義的在高地址,后定義的在低地址。
但今天仔細測試了下,發(fā)現(xiàn)情況并不總是如此。

Win10 VS2017,Debug x64

image.png

先低后高

Win10 VS2017,Debug x86

image.png

先高后低

Win10 VS2017,Release x64

image.png

先高后低

Win10 VS2017,Release x86

image.png

先低后高

Ubuntu18 gcc7.5,Debug x64

image.png

先低后高

Ubuntu18 gcc7.5,Debug x86

image.png

先低后高

Ubuntu18 gcc7.5,Release x64

image.png

先低后高

Ubuntu18 gcc7.5,Release x86

image.png

先低后高

綜上,是不是可以下個結論:linux gcc里都是先低后高?
答案是否。
下面是fedora 37 + gcc 12.2中測試結果:


image.png

所以,函數(shù)里局部變量地址高低與定義順序的關系,并沒有一個統(tǒng)一的規(guī)則。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容