【问题标题】:In C, how can I print out what is stored at a specific memory address?在 C 中,如何打印出存储在特定内存地址的内容?
【发布时间】:2013-05-27 17:45:19
【问题描述】:

是否可以打印出存储在特定内存地址的内容?例如,我想知道地址 0x7FFFFF0 存储了什么。我该怎么做?我不知道事先在地址中存储了什么,即。它可以是 int 或 char 或 null 终止符。

【问题讨论】:

  • x=0x7FFFFF0; int val = *x;?
  • @MarcB,没有演员表就无法工作,但这是正确的想法。
  • 是的。但当然,无论如何,OP 都无法判断地址是 char 还是 int - 它们是相同的东西,真的。
  • 您为什么要这样做?你怎么知道一个任意的内存地址包含任何感兴趣的东西?如果它是一个 I/O 端口或一些 CPU 感知数据,不应该已经有一个 #define'd 符号可以使用吗?

标签: c memory memory-management memory-address


【解决方案1】:

根据您的环境,您可以简单地声明一个指针并取消引用它:

volatile unsigned int *p = (volatile unsigned int *)0x7FFFFF0;
printf("%u\n", *p);

当然,此操作需要您的程序有权访问该内存。您的里程可能会因不同的操作系统和环境而异。

如果不做更多的工作来确定内存代表什么,从语义上讲,然后在该上下文中提取您关心的字节,您肯定无法在运行时提取任何类型信息。

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 2020-10-23
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多