读书人

一个查看内存单元的小程序解决办法

发布时间: 2012-03-30 17:32:09 作者: rapoo

一个查看内存单元的小程序
这是书上的一个查看内存内容的小程序,我不明白为什么有时候输入的值可以,有时候却不行。比如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;}


[解决办法]
探讨
这是书上的一个查看内存内容的小程序,我不明白为什么有时候输入的值可以,有时候却不行。比如10000可以,但是换一个地址就不行了。是不是有一些内存单元是不允许查看的?


C/C++ code


#include<stdio.h>
#include<ctype.h>

typedef unsigned char BYTE;

int main()
{
unsign……

[解决办法]
的确,有些内存单元是受保护的,有些程序的无权查看。尤其是用户进程是不能够访问某些系统单元的。
[解决办法]
操作系统下的内存保护,
[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。

读书人网 >C语言

热点推荐