在GCC中編譯C代碼時,是否有任何方法可以保證堆棧變量將按照我聲明的順序出現在堆棧中(或按相反順序,無所謂對我來說)?我知道這是可以通過結構,但我寧願不使用它們。堆棧中變量的順序(GCC)
0
A
回答
4
0
如果您堅持不想使用struct,那麼您將不得不自己使用alloca()
分配堆棧內存。但是,您需要在堆棧內存中手動管理本地變量。
我不會建議你這樣做。使用一個結構。
0
最可靠的方法是引導gcc使用gcc -S
生成彙編語言輸出,並檢查彙編語言輸出以找出哪些變量放在哪裏。如果您沒有進行優化編譯,則變量可能不會被移除或重新排列,如果您爲每個局部變量分配不同的值,應該很容易找到每個變量。
我承認這不是很高科技。但是如果你想確保gcc生成的代碼能夠以特定的方式工作,你將不得不看看它生成的代碼...
相關問題
- 1. 堆棧變量
- 2. ggplot堆棧條的順序
- 3. 是否有在C++堆棧變量的順序被破壞
- 4. Visual Studio如何決定堆棧變量的分配順序?
- 5. 堆棧中局部變量的GCC符號表
- 6. iPhone CALayer堆棧順序
- 7. JVM堆棧變量
- 8. GCC堆棧優化
- 9. 調用堆棧上的異常處理堆棧幀的順序
- 10. [R排序/順序堆積變量
- 11. 重新排序引導堆棧順序
- 12. 堆棧,foreach,錯誤的順序?
- 13. c堆棧變量損壞
- 14. 堆棧變量在走?
- 15. C++(GCC):未定義的引用`堆棧<int> ::堆棧(INT)」
- 16. 堆棧數據存儲順序
- 17. Z-Index更改堆棧順序FadeIn FadeOut
- 18. 堆棧變量''在C++中損壞
- 19. 在C++中刪除堆棧變量
- 20. 堆排序錯誤:圍繞變量堆棧損壞?
- 21. 在堆棧展開期間打印堆棧變量
- 22. 檢查堆棧上的局部變量
- 23. 堆棧上的局部變量
- 24. 堆棧周圍的變量''已損壞
- 25. 堆棧溢出的C變量位置
- 26. 緩存對齊的堆棧變量
- 27. GCC的神祕堆棧問題4.6.2
- 28. 獲取調用堆棧的深度GCC
- 29. gcc用我的堆棧做什麼?
- 30. 使用gcc插件修改變量聲明的順序
爲什麼你想要這樣?而'struct'有什麼問題? – 2012-03-02 15:00:23
可能重複的[可以C編譯器重新排列堆棧變量?](http://stackoverflow.com/questions/238441/can-ac-compiler-rearrange-stack-variables) – 2012-03-02 15:01:05
我想演示一定的堆棧溢出問題時緩衝區和指針,並以某種方式定位。我不想使用結構體(相反,我不能),因爲有些變量是在內聯函數中聲明的,這些函數稍後會在主例程中調用。 – leetrobot 2012-03-02 15:03:08