效果
源码
#include
#include
#define MEM_BLOCK_SIZE 32
//显示内存中的内容
BOOL ShowMemContent(LPVOID lpMem, SIZE_T dwSize){
BYTE lpShow[MEM_BLOCK_SIZE];
INT i = 0;
//防止栈溢出
if (dwSize>MEM_BLOCK_SIZE){
printf("溢出\n");
return FALSE;
}
//复制到数组
CopyMemory((LPVOID)lpShow, lpMem, dwSize);
for (; i< dwSize; i++){
printf("%.2X ", lpShow[i]);
if (!((i + 1) % 16)){ printf("\n"); }//就是换行
}
printf("\n");
return TRUE;
}
int main(int argc, PCHAR argv[]){
HANDLE hHeap = GetProcessHeap();
LPVOID lpSrc;
LPVOID lpDis;
//分配内存
lpSrc = HeapAlloc(hHeap, 0,MEM_BLOCK_SIZE);
lpDis = HeapAlloc(hHeap, 0, MEM_BLOCK_SIZE);
//显示新分配的内存
printf("HeapAlloc分配但不清零:\n");
ShowMemContent(lpDis, MEM_BLOCK_SIZE);
ZeroMemory(lpDis, MEM_BLOCK_SIZE);
printf("ZeroMemory清零:\n");
ShowMemContent(lpDis, MEM_BLOCK_SIZE);
FillMemory(lpDis, MEM_BLOCK_SIZE, 0xBB);//使用0xBB填充
FillMemory(lpDis, MEM_BLOCK_SIZE/2, 0xAA);//使用0xAA填充前半部分
//CopyMemory(lpDis, lpSrc, MEM_BLOCK_SIZE);//复制内存
printf("FillMemory有规律的填充:\n");
ShowMemContent(lpDis, MEM_BLOCK_SIZE);
//释放内存
HeapFree(hHeap, 0, lpSrc);
HeapFree(hHeap, 0, lpDis);
getchar();
return 0;
}
网友评论