gpt4 book ai didi

c++ - 使用十六进制内存地址获取变量的值

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:29 25 4
gpt4 key购买 nike

我只想使用十六进制地址获取值:

#include<stdio.h>

int main()
{
int *hold, value=10;
hold = &value;
printf("%p",hold);
}

它给了我地址 0x7fffd7c24334。我只是想知道在 C 或 C++ 中是否有一种方法可以让我暂时使用十六进制数 0x7fffd7c24334 直接获取“值”的值。我想变量 hold 的地址在一段时间内是相同的,所以 0x7fffd7c24334 仍然指向 value,但我不确定。

最佳答案

假设这个地址在你的程序的每次执行中都是一致的,你可以使用这个:

int value2 = *(int*)0x7fffd7c24334;

但请注意,这个假设通常是错误的!

函数中局部变量的地址取决于调用函数时执行点的堆栈状态(SP 寄存器的值)。

它可能在 main 中工作,因为这个函数只被调用一次,并且 SP 寄存器在每次执行程序时都应该具有相同的值。但即使它确实有效,只要您在 value 之前添加变量,该地址就会改变。简而言之,不要使用这种方法。

关于c++ - 使用十六进制内存地址获取变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com