在指定地址显示16字节的内容(十六进制)

1fo*_*st1 2 c c++ hex pointers memory-address

我正在尝试显示特定地址的内容,给定该地址的char*.到目前为止,我尝试使用以下实现来完成它

int mem_display(char *arguments) {
    int address = *arguments; 
    int* contents_pointer = (int*)address;
    int contents = *contents_pointer;
    printf("Address %p: contents %16x\n", contents_pointer, contents);              
}
Run Code Online (Sandbox Code Playgroud)

但我一直收到"分段错误(Core Dumped)"错误.我试图制作一个虚拟指针来测试

char foo = 6;  
char *bar = &foo;
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在

mel*_*ene 5

我发现很难解释问题是什么,因为代码中几乎每一行都是错误的.

这就是我要做的事情:

void mem_display(const void *address) {
    const unsigned char *p = address;
    for (size_t i = 0; i < 16; i++) {
        printf("%02hhx", p[i]);
    }
    putchar('\n');
}
Run Code Online (Sandbox Code Playgroud)