一个查看内存单元的小程序
这是书上的一个查看内存内容的小程序,我不明白为什么有时候输入的值可以,有时候却不行。比如10000可以,但是换一个地址就不行了。是不是有一些内存单元是不允许查看的?
- C/C++ code
#include<stdio.h>#include<ctype.h>typedef unsigned char BYTE;int main(){ unsigned int addr; int i,n; BYTE *ptr; printf("Address od main function : %x\n",(unsigned int)main); printf("Address od addr varible : %x\n",(unsigned int)&addr); printf("\nEnter a (hex) address : "); scanf("%x",&addr); printf("Enter number of byte to view : "); scanf("%d",&n); putchar('\n'); printf(" Address Bytes Characters\n"); printf("-------- ----------------------------- ----------\n"); ptr = (BYTE *)addr; for(;n > 0;n -= 10) { printf("%8x ",(unsigned int)ptr); for(i = 0;i < 10 && i < n;i ++) { printf("%.2x ",*(ptr + i)); } for(;i < 10;i++) { printf(" "); } printf(" "); for(i = 0;i < 10 && i < n;i++) { BYTE ch = *(ptr + i); if(!isprint(ch)) ch = '.'; printf("%c",ch); } printf("\n"); ptr += 10; } return 0;}
[解决办法]
[解决办法]
的确,有些内存单元是受保护的,有些程序的无权查看。尤其是用户进程是不能够访问某些系统单元的。
[解决办法]
操作系统下的内存保护,
[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。