[英]Puzzle - Determine which of the addresses belong to global/local/heap variables
我有以下難題需要解決,但我不確定如何做到。 它說:
有一個Ubuntu Linux C程序,它輸出變量的地址。
v1: 0xa156128
v2: 0xff97410c
v3: 0xf750e34b
v4: 0x804a0c0
我知道程序不使用共享內存,並且這些變量中至少有一個是堆變量。 這些變量中的哪一個是global
/ local
/ heap
。
以上就是所有可用的信息,我對解決這個難題的任何想法都非常感興趣。
閱讀評論后進行編輯:
如果我查看“運行時-存儲組織”鏈接( http://lambda.uta.edu/cse5317/notes/node33.html ),似乎v2
和v3
是具有最大地址的局部變量,而v1
是堆變量,因為它位於堆棧和靜態數據之間,而v4
是全局變量,它不會像本地變量那樣在運行時在堆棧上聲明,而是在二進制文件的.data節中聲明。
嘗試分析/ proc / PID / maps的內容(請參閱proc(5))。 我相信這是確定地址所屬存儲區域的最正確方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.