zoukankan      html  css  js  c++  java
  • 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;

    }
  • 相关阅读:
    GPU编程和流式多处理器(七)
    GPU编程和流式多处理器(六)
    vue——使用vant轮播组件swipe + flex时,文字抖动问题
    golang 修改字符串
    Go 彻底弄懂return和defer的微妙关系
    Redis 的持久化机制
    Redis 缓存击穿
    Redis 缓存穿透
    Redis 雪崩
    正则验证
  • 原文地址:https://www.cnblogs.com/liulun/p/1577359.html
Copyright © 2011-2022 走看看