5.7 对内存进行复制移动填充

2017-09-14  本文已影响0人  f675b1a02698

效果

源码

#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;

}

上一篇下一篇

猜你喜欢

热点阅读