一个实用的MemroyDump函数

自己编写的一个实用方便的查看内存状态的Debug函数。

可查看程序内的任意地址的内存状态。

 

void MemDmp(const void *adr, int len) { const char *hex_ch = "0123456789ABCDEF"; const char *fmt = "[%08X] %.8s %.8s %.8s %.8s * %.16s */n"; const char *base_adr, *curr_adr; unsigned char hex[16<<4], asc[16]; base_adr = curr_adr = (const char *)adr; for (unsigned int ix=0, num=len/16, rem=len%16; ix <= num; ix++){ unsigned int iy; memset(hex,' ',16<<1); memset(asc,' ',sizeof(asc)); for (iy=0; iy < ((ix<num) ? 16 : rem); iy++) { hex[(iy<<1)+0] = hex_ch[0x0F&(base_adr[(ix<<4)+iy]>>4)]; hex[(iy<<1)+1] = hex_ch[0x0F&(base_adr[(ix<<4)+iy]) ]; asc[iy]=((unsigned char)base_adr[(ix<<4)+iy]<=' ') ? '.' : base_adr[(ix<<4)+iy]; } if ((ix<num) || (rem>0)){ hex[iy<<1]=' '; printf(fmt,curr_adr,hex+0,hex+8,hex+16,hex+24,asc); fflush(stdout); curr_adr += 16; } } }

 使用例子:

struct tm *ar; time_t tx; tx = (time_t)time(NULL); ar = localtime(&tx); MemDmp(ar, sizeof(struct tm));

效果如下图:

一个实用的MemroyDump函数_第1张图片

 

你可能感兴趣的:(struct,null,hex)