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

简介: Code#include #include #include using namespace std;#define MEM_BLOCK_SIZE 32//lpMem需要打印的内存指针//dwSize大小BOOL ShowMemContent(LPVOID lpMem,SIZE_T dwSize)...
img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 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;

}
目录
相关文章
|
6月前
|
C语言
C语言内存及堆栈操作
C语言内存及堆栈操作
32 0
|
Oracle 关系型数据库 Linux
解决在linux服务器上部署定时自动查找cpu,内存,磁盘使用量,并将查询结果写入数据库的脚本,只能手动运行实现插库操作
问题描述:将脚本名命名为mortior.sh(以下简称mo),手动执行脚本后查询数据库,表中有相应的信息,放入自动执行队列中,脚本被执行,但是查询数据库,并没有新增数据。
80 0
|
开发框架 算法 .NET
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
一个简单高效低内存的.NET操作Excel开源框架 - MiniExcel
157 0
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
【深入理解计算机系统】int 不是整数 | float 不是实数 | 内存引用错误的例子 | 学习笔记
71 0
|
4月前
|
移动开发 监控 Serverless
函数计算操作报错合集之机器配置显示为1G内存,但报错显示0.12G,是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
3月前
|
存储 程序员 编译器
c++学习笔记08 内存分区、new和delete的用法
C++内存管理的学习笔记08,介绍了内存分区的概念,包括代码区、全局区、堆区和栈区,以及如何在堆区使用`new`和`delete`进行内存分配和释放。
45 0
|
5月前
|
存储 编译器 C语言
【C++】学习笔记——内存管理
【C++】学习笔记——内存管理
52 15
|
5月前
|
存储 C++
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
C primer plus 学习笔记 第12章 存储类别、链接和内存管理
|
6月前
|
关系型数据库 MySQL Java
实时计算 Flink版操作报错之整内存和cpu分配之后启动报错如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
并行计算 索引 Python
讨论如何优化 DataFrame 操作,减少内存占用和提高执行速度
【5月更文挑战第19天】优化 DataFrame 操作涉及选择合适的数据类型、避免复制、使用向量化、高效迭代和设置索引。通过这些策略,如使用 `np.int8` 节省内存,直接修改列数据,利用 `itertuples`,设置分类数据类型,以及分块和并行计算,可以显著减少内存占用和提高执行速度,从而更好地处理大规模数据。实践中需结合具体情况综合运用,不断测试和优化。
208 2