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

效果

源码

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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容