• WinApi学习笔记内存的复制,填充,输出等操作


    Code
    #include <windows.h>
    #include 
    <stdio.h>
    #include 
    <iostream>

    using namespace std;
    #define MEM_BLOCK_SIZE 32

    //lpMem需要打印的内存指针
    //dwSize大小
    BOOL ShowMemContent(LPVOID lpMem,SIZE_T dwSize)
    {
        BYTE lpShow[MEM_BLOCK_SIZE];
        INT i 
    = 0;
        
    if(dwSize >MEM_BLOCK_SIZE)
        {
            cout
    <<"over flow堆栈溢出";
            
    return FALSE;
        }
        CopyMemory((LPVOID)lpShow,lpMem,dwSize);
        
    for(;i<dwSize;i++)
        {
            
    //cout<<&lpShow[i];
            printf("%.2X",lpShow[i]);
            
    if(!((i+1)%16))
            {
                cout
    <<endl;
            }
        }
        cout
    <<endl;
        
    return TRUE;
    }
    int main(void)
    {
        HANDLE hHeap 
    = GetProcessHeap();
        LPVOID lpSrc;
        LPVOID lpDis;
        lpSrc 
    = HeapAlloc(hHeap,0,MEM_BLOCK_SIZE);
        lpDis 
    = HeapAlloc(hHeap,0,MEM_BLOCK_SIZE);
        cout
    <<"HeapAlloc分配但不清零"<<endl;
        ShowMemContent(lpDis,MEM_BLOCK_SIZE);
        ZeroMemory(lpDis,MEM_BLOCK_SIZE);

        cout
    <<"HeapAlloc分配并清零"<<endl;
        ShowMemContent(lpDis,MEM_BLOCK_SIZE);

        cout
    <<"用指定的内容填充内存"<<endl;
        FillMemory(lpSrc,MEM_BLOCK_SIZE,
    0xBB);
        FillMemory(lpSrc,MEM_BLOCK_SIZE
    /2,0xAA);
        CopyMemory(lpDis,lpSrc,MEM_BLOCK_SIZE);
        ShowMemContent(lpDis,MEM_BLOCK_SIZE);

        HeapFree(hHeap,
    0,lpSrc);
        HeapFree(hHeap,
    0,lpDis);

        CHAR a;
        std::cin
    >>a;

    }
  • 相关阅读:
    Mdate时间插件
    JS数组映射保存数据-场景
    基于微信的图片放大预览
    移动前端自适应布局适配解决方案
    JS数组映射详解
    回复与发表切换
    this应用详解-js原生
    淘宝虚拟产品自动发货软件
    搭建个人博客
    2019免杀大马
  • 原文地址:https://www.cnblogs.com/liulun/p/1577359.html
Copyright © 2020-2023  润新知