例如,我定義了一個變數
int a=5;
我知道5存盤在堆疊中,但是存盤在哪里a?請幫忙
uj5u.com熱心網友回復:
C 程式中變數名存盤在哪里?
變數名存盤在源代碼中。
生成的程式的細節超出了語言的范圍,但通常情況下,變數名存盤在“除錯資訊”中——如果它們被存盤的話。
uj5u.com熱心網友回復:
這是一個完整的最小示例,演示了@eerorika 關于除錯資訊的答案(此處,在 ELF 檔案中):
$ cat main.cpp
int main(int argc, char **argv)
{
int whereIsMyVar = 5;
return whereIsMyVar;
}
并在沒有優化 ( -O0) 和除錯資訊 ( ) 的情況下編譯它-g:
$ g -g -O0 main.cpp -o main
現在讓我們看看發生了什么objdump:
$ objdump -D -S main > main.asm
$ sed -n "378,389p" main.asm
00000000000005fa <main>:
int main(int argc, char **argv)
{
5fa: 55 push %rbp
5fb: 48 89 e5 mov %rsp,%rbp
5fe: 89 7d ec mov
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412497.html
標籤:
下一篇:將變數內容匯出到檔案
