![](/img/trans.png)
[英]How do I know the hexadecimal value in memory of a variable using the VS debugger?
[英]Get the value of a variable using the hexadecimal memory address
我只想使用十六進制地址獲取值:
#include<stdio.h>
int main()
{
int *hold, value=10;
hold = &value;
printf("%p",hold);
}
它給了我地址0x7fffd7c24334
。 我只是想知道 C 或 C++ 中是否有一種方法可以0x7fffd7c24334
使用十六進制數0x7fffd7c24334
直接獲取“value”的值。 我想變量hold
的地址在一段時間內是相同的,因此0x7fffd7c24334
仍然指向value
,但我不確定。
假設這個地址在你的程序每次執行時都是一致的,你可以使用這個:
int value2 = *(int*)0x7fffd7c24334;
但請注意,這種假設通常是錯誤的!
函數中局部變量的地址取決於調用函數時執行點的堆棧狀態(SP 寄存器的值)。
它可能在main
工作,因為此函數僅被調用一次,並且每次執行程序時 SP 寄存器都應具有相同的值。 但即使它確實有效,只要在value
之前添加變量,該地址就會改變。 簡單來說,不要使用這種方法。
我認為你可以使用這個:
printf("%x", hold);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.