簡體   English   中英

難題-確定哪些地址屬於全局/本地/堆變量

[英]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 ),似乎v2v3是具有最大地址的局部變量,而v1是堆變量,因為它位於堆棧和靜態數據之間,而v4是全局變量,它不會像本地變量那樣在運行時在堆棧上聲明,而是在二進制文件的.data節中聲明。

嘗試分析/ proc / PID / maps的內容(請參閱proc(5))。 我相信這是確定地址所屬存儲區域的最正確方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM