gpt4 book ai didi

c - 取消引用 C 中的任意内存位置

转载 作者:IT王子 更新时间:2023-10-28 23:35:57 26 4
gpt4 key购买 nike

我正在尝试调试我编写的程序。根据调试器,特定的 void * 保存值 0x804b008。我希望能够取消引用该值(将其转换为 int * 并获取它的值)。

我收到此代码的段错误。 (顺便说一句,带有 void * 的程序仍在后台运行 - 它已“暂停”)

#include <stdio.h>

int main() {
int* pVal = (int *)0x804b008;
printf("%d", *pVal);
}

我明白为什么能够尊重内存中的任何点可能是危险的,所以也许这就是为什么这不起作用。

谢谢!

最佳答案

您的程序(在调试器中运行)和这个程序不会在同一个虚拟内存空间中运行;访问那个指针(即使它是一个有效的)不会给你任何信息。

您机器上运行的每个程序都有自己的逻辑地址空间。您的操作系统、编程语言运行时和其他因素会影响您看到的用作任何给定程序指针的实际文字值。但是一个程序肯定不能看到另一个程序的内存空间,当然除了软件调试器,它们会做一些特殊的技巧来支持这种行为。

在任何情况下,您的调试器都应该让您在程序暂停时查看您想要的任何内存——假设您有一个有效的地址。在 gdb 中 x/x 0x804b008 会得到你想看到的。

更多信息:

  1. 关于 Virtual Memory 的维基百科文章.
  2. gdb documentation

关于c - 取消引用 C 中的任意内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270797/

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