假设您所在的系统没有受保护的内存访问,和/或没有MMU,因此使用的地址是真实的物理地址,这非常简单.
#include <stdio.h>
#include <stdlib.h>
/* Print memory contents from <start>, 16 bytes per line. */
static void print_memory(const void *start, size_t len)
{
const unsigned char *ptr = start;
int count = 0;
printf("%p: ", ptr);
for(; len > 0; --len)
{
printf("%02X ", *ptr++);
if(++count >= 16)
{
printf("\n%p: ", ptr);
count = 0;
}
}
if(count > 0)
putchar('\n');
}
int main(void)
{
print_memory(NULL, 1024);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
这应该在例如旧的Amiga上运行得非常好,但在运行Linux,Windows或其他任何东西的现代PC上几乎没用.