我想从给定的内存地址中打印出内容。
使用此代码,我可以定义一个变量,定义一个指向它的指针,并使用该指针打印其内容。
char buf[100];
void *p = buf;
strcpy(p, "Test string");
printf("Address: %X\n", &buf);
printf("Contents: %c\n", p);
Run Code Online (Sandbox Code Playgroud)
我要做的是指定一个特定的内存地址,并打印出该块的内容。我尝试通过递增和递减p进行实验,但它不会输出任何内容。
一个有趣的小问题。无论出于好奇还是出于好奇,每个程序员迟早都应该想到的一种情况。
本质上分为四个部分。
为简单起见,我将使用0x1000地址和整数内容。
int address = 0x1000;
int* pcontent = (int*)address;
int content = *pcontent;
printf ("Address %p: content %08x\n", pcontent, content);
Run Code Online (Sandbox Code Playgroud)
应该提出两点。
[很多年前,我使用这种策略在只有96KB内存的机器上打印出内存的全部内容,这导致了一些有趣的黑客攻击可能性。但是我离题了。