内存位置

2 c

谁能请一个C代码显示从0到结束的内存位置的所有值?

unw*_*ind 6

假设您所在的系统没有受保护的内存访问,和/或没有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上几乎没用.