C-从特定内存地址读取值

C-从特定内存地址读取值,c,C,如何使用C编程语言从给定的内存地址(例如,0xfed8213)读取值?每个进程都有自己的进程,因此,一个程序中的地址0x12345678与另一个程序中的地址0x12345678不同 您只需执行以下操作即可访问地址中的内容: #include <stdio.h> int main(int argc, char *argv[]){ char *ptr = (char *)0x12345678; //the addr you wish to access the contents

如何使用C编程语言从给定的内存地址(例如,
0xfed8213
)读取值?

每个进程都有自己的进程,因此,一个程序中的地址
0x12345678
与另一个程序中的地址
0x12345678
不同

您只需执行以下操作即可访问地址中的内容:

#include <stdio.h>

int main(int argc, char *argv[]){
    char *ptr = (char *)0x12345678; //the addr you wish to access the contents of
    printf("%c\n", *ptr); //this will give you the first byte, you can add any more bytes you need to the ptr itself, like so: *(ptr + nbyte).

    return 0;
}
#包括
int main(int argc,char*argv[]){
char*ptr=(char*)0x12345678;//要访问其内容的地址
printf(“%c\n”,*ptr);//这将为您提供第一个字节,您可以向ptr本身添加任何需要的字节,如:*(ptr+nbyte)。
返回0;
}
不过,除非你真的知道自己在做什么,否则很可能会出现分割错误。我的猜测是,你认为这是解决其他问题的方法,而这不是实际的解决方案。不过,这确实回答了你在OP中的问题


以下是

对于内存地址范围,它应该类似于0x00000000-0xFFFFFF。允许我读取此地址范围内的特定值吗?如果是这样,为什么我会在这里出现seg错误?@user3815726如果您试图读取未映射页面的内容,则会出现seg错误。如果你想了解更多关于虚拟内存的信息,或者想看看操作系统的书,我会阅读我超链接的链接。仅仅因为整个范围都可用,并不意味着您就可以立即将其全部映射到流程:)