C++ 可扩展的内存缓冲区

2023-11-09

类声明(CMemBuffer.h):

#pragma once

class CMemBuffer
{
public:
	CMemBuffer(DWORD dwSize = 0);
	~CMemBuffer(void);

	/*申请内存*/
	BOOL Realloc(DWORD dwSize, BOOL bSetLength = FALSE);

	/*写入数据*/
	BOOL Append(LPCVOID pBuffer, DWORD dwSize, DWORD dwPos = 0);
	
	/*删除数据*/
	void Remove(DWORD dwSize);
	
	/*获取数据指针*/
	LPBYTE GetData(DWORD dwPos = 0);
	
	/*获取数据大小*/
	DWORD Size();

	/*设置缓存区大小*/
	void SetSize(DWORD dwSize);

	/*删除缓存区,数据大小置0*/
	void Emtpy();

	/*清空数据,缓存大小不变*/
	void Clear();

private:
	CMemBuffer(const CMemBuffer&);
	CMemBuffer& operator = (const CMemBuffer&);

	BOOL Resize(DWORD dwSize);

	/*内存数据指针*/
	LPBYTE m_pBuffer;

	/*内存大小*/
	DWORD m_dwCapacity;
	
	/*数据大小*/
	DWORD m_dwSize;
};

类定义(CMemBuffer.cpp):

#include "pch.h"
#include "MemBuffer.h"


#define BUFFER_SIZE 2048
CMemBuffer::CMemBuffer(DWORD dwSize)
{
	m_pBuffer = NULL;
	m_dwCapacity = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 可扩展的内存缓冲区 的相关文章

  • JS 元素遍历

    1 循环遍历从getElementsByClassName返回的所有元素 var elements document getElementsByClassName classname Array prototype forEach call
  • 多语言版本 UI资源切换

    1 如果窗体资源和源码里面所使用的字符串资源 都已经存在于资源视图里面 则通过下面方式来实现 LANGID lid GetSystemDefaultLangID if 0x0809 lid 英语 0x0809 SetThreadUILang
  • GPAC MP4文件写入(支持H264、H265)

    1 GPAC模块下载链接https github com gpac gpac或https gpac wp imt fr downloads 2 编译指导https github com gpac gpac wiki Build Introd
  • VC++ HBITMAP保存文件

    请先看下面这段代码 BOOL SaveBmp HBITMAP bmp string path FILE f fopen path c str wb if f return 0 BITMAP bmpinfo GetObject bmp siz
  • VC++ 获取文件版本号

    源码实现 pragma comment lib Version lib typedef struct VS VERSIONINFO WORD wLength WORD wValueLength WORD wType WCHAR szKey
  • OpenGL GLFW入门篇 - 画点集

    效果图 主体代码 void DrawPoints void int i GLfloat x y glPushMatrix 另一个相对的Z平移可以分离对象 glLoadIdentity glTranslatef 0 0 0 0 0 f 设置点
  • VC++ 程序启动即隐藏

    所谓的隐藏是程序启动后不显示主窗体 网上介绍了很多方法 是否达到效果 众说纷纭 这里只介绍一种在项目中实际应用到的切实可行的方法 这里假设主窗体为CMainDialog 1 变量声明 BOOL m bShowWindow 2 给变量赋初始值
  • C++ 结束进程

    有时候进程未正常退出 导致进程列表遗留僵尸进程 程序启动需要杀死这种僵尸进程 include TLHELP32 H void TerminateSelfApplication TCHAR szFileName MAX PATH 0 TCHA
  • 通过GetVersionEx和ntoskrnl.exe获取操作系统版本号

    include
  • VC++ 源码实现通达信公式管理器

    效果图 前段时间 因业务需要 写了这样一个软件 同样的页面已经是第2次写了 第1次大约5年前的事情了 因为代码遗失 于是重新写 页面看似复杂 实现起来非常简单 第一步 参照通达信的公式管理器核心文件TCalc dll 导出资源文件 TCal
  • C++ 可扩展的内存缓冲区

    类声明 CMemBuffer h pragma once class CMemBuffer public CMemBuffer DWORD dwSize 0 CMemBuffer void 申请内存 BOOL Realloc DWORD d
  • TightVNC H264编解码(二)之硬编码库的编译

    AVCodec codec avcodec find encoder by name nvenc h264 如果是默认的ffmpeg库 返回结果是NULL 看来是不带有硬编码功能的 重新编译分支ffnvcodec 不到半个小时编译完成 返回
  • GDI+ 显示GIF图像

    头文件定义 pragma once include
  • VC++ UI布局管理器

    程序从codeproject上下载的 功能类似QT的QLayout 有了它界面缩放再也不会乱套了 具体使用方法可参考源码示例 资源下载链接地址 https download csdn net download u012156872 1926
  • 高精度时间差值

    引用 解决GetTickCount的时间精度不够的问题 1 类声明 pragma once define WIN32 LEAN AND MEAN include
  • OpenSSL RSA加密和解密

    rsa加密的密钥格式常见的有两种 一种是PKCS 1 密钥头为 BEGIN RSA PUBLIC KEY 一种是PKCS 8 密钥头为 BEGIN PUBLIC KEY 以字符串公钥为例 对PKCS 1格式的密钥加载使用的函数是PEM re
  • GmSSL 在Windows上的使用(编译和使用)

    1 源码的下载 GitHub guanzhi GmSSL 支持国密SM2 SM3 SM4 SM9 SSL的密码工具箱 2 编译工具的下载 首先安装VS开发工具 接着下载ActivePerl 打开VS命令提示符 管理员权限 并切换到 Acti
  • EAN13条形码绘制(Delphi版)

    单元声明 unit UnitEAN https wenku baidu com view d61eec0dc4da50e2524de518964bcf84b9d52d0d html 共有95 18 113条数据模块 1表示黑 0表示白 左侧
  • C++ xml库的选择

    自从触及xml文件的读写 一直以来都是用的tinyxml2 接口简单 然而近期项目频繁出错 跟踪调试发现 问题出在了xml文件的读写上 当节点数超过百万级别的时候 内存暴增到G的当量 很显然程序会由于内存申请不足崩掉了 果断寻找替代品 百度
  • 粤嵌GEC6818开发板-入门感慨篇(续一)

    触摸屏的事件 include

随机推荐

  • 华为手机文件存放目录

    1 手机通话录音 内部存储 gt Sounds gt CallRecord路径下面
  • Python基本数据类型

    Python基本数据类型 数据类型是每种编程语言必备属性 只有给数据赋予明确的数据类型 计算机才能对数据进行处理运算 因此 正确使用数据类型是十分必要的 不同的语言 数据类型类似 但具体表示方法有所不同 以下是Python编程常用的数据类型
  • 探索珠宝商城小程序:商家如何实现线上卖珠宝

    近期 微信小程序的发展势头强劲 各行各业都在积极开发自己的小程序 以适应这个数字化的时代 珠宝行业也不例外 许多珠宝品牌都已经推出了自己的小程序 为用户提供了更加便捷 个性化的购物体验 因此 制作一款珠宝商城小程序 不仅是顺应潮流的选择 也
  • go+goquery+chromedp爬虫实现对网页数据抓取

    安装 首先 需要安装两个包 1 goquery go get github com PuerkitoBio goquery goquery包主要用于搜索界面上的元素 获取里面的值 具体操作可以参考 飞雪无痕 的 golang goquery
  • IPv6头部

    一 IPv6数据包的结构 IPv6报文 分为三个部分 头部 扩展头 上层协议数据单元 IPv4报文 头部 上层协议数据单元 IPv6头部始终存在 大小固定40字节 扩展头可能有0个或多个 且长度不固定 二 IPv6头部 1 结构 2 域 P
  • ORALCE函数:LAG()和LEAD() 分析函数详解

    Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据 Lag 和后N行的数据 Lead 作为独立的列 在实际应用当中 若要用到取今天和昨天的某字段差值时 Lag和Lead函数的应用就显得尤为重要 当然 这种操作可以用表的自连
  • SpringBoot整合RabbitMQ详细案例(入门RabbitMQ看这一篇就够了)

    SpringBoot整合RabbitMQ详细案例 入门RabbitMQ看这一篇就够了 1 RabbitMQ的使用场景 1 1 异步处理 1 2 应用解耦 1 3 流量削峰 2 RabbitMQ 交换机介绍 2 1 Direct exchan
  • 第3课 微信开发者工具picker标签实现动态时间选择器与地区选择器:

    微信小程序picker标签实现动态时间选择器与地区选择器 运行效果如下 wxml代码如下
  • Vue实现搜索页面

    目录 一 效果 二 实现 一 效果 实现功能如下图所示 因为被腰斩 样式未调整 二 实现 直接上代码 pages Search vue 搜索页
  • remote: Support for password authentication was removed on August 13, 2021

    1 github在2021年8月14日七夕这天搞事情 如果这天你提交了github代码报错如下 问题 remote Support for password authentication was removed on August 13 2
  • 报错: ‘XXXX‘ is declared but its value is never read.Vetur(6133)

    引入的路径本没有问题 结果确报错 解决方法如下 1 在VScode工具的设置中找到设置 2 在搜索栏输入 vetur 并找到Vertur gt Validation Script 在比较靠下多滑动页面哦 3 最后关闭项目重新打开即可 报错消
  • 【C语言】如何使用 Visual studio 2019 编写,并编译和运行C代码?

    提示 该文章以 Visual studio 2019为例来进行说明 2019及以后的版本同样适用该文章 文章目录 一 创建一个新项目 二 在项目里创建一个源文件 三 编写C语言代码 四 编译和运行代码 五 将旧项目中的C文件添加到新项目中
  • [CISCN 2022 初赛]online_crt

    文章目录 涉及知识点 代码审计 解题过程 涉及知识点 CVE 2022 1292漏洞 OpenSSL ssrf 代码审计 app py源码 import datetime import json import os import socke
  • 权限篇

    权限篇 root 系统超级用户 UID为0 普通用户由root创建 UID从1000开始累计 系统中虚拟用户UID在1 999之间 由操作系创建 用户配置文件 etc passwd 新创建的用户 信息会追加到这个文件结尾 sbin nolo
  • Git更新国内清华源

    sudo sed i s http archive ubuntu com https mirrors tuna tsinghua edu cn g etc apt sources list sudo sed i s http securit
  • 浏览器network报错:ERR_CERT_AUTHORITY_INVALID

    1 今天遇到个问题在访问自己写的网站时 其中有个获取验证码功能 是后端Https接口 请求没到后端 浏览器报了Failed to load resource net ERR CERT AUTHORITY INVALID 临时解决办法 1 其
  • 深入理解Java虚拟机jvm-栈溢出-栈帧过多java.lang.StackOverflowError

    栈溢出 示例 虚拟机参数 结果 原因分析 示例 栈溢出 栈帧过多 栈内存过小 每个方法被执行的时候 Java虚拟机都会同步创建一个栈帧 1 Stack Frame 用于存储局部变量表 操作数栈 动态连接 方法出口等信息 java lang
  • CSDN常用字体设置

    一 字体设置 font face 微软雅黑 color FF8C00 size 3 在这里放入需要修改颜色的语句 font 效果 在这里放入需要修改颜色的语句 face 是调节字体类型 可随意改写 楷体 黑体 微软雅黑 宋体等 color
  • 贝叶斯网络之父Judea Pearl力荐、LeCun点赞,这篇长论文全面解读机器学习中的因果关系

    选自arXiv 作者 Bernhard Sch lkopf机器之心编译 机器之心编辑部 本文认为机器学习和人工智能领域中的待解难题本质上与因果关系有关 图灵奖得主 贝叶斯网络之父 Judea Pearl 曾自嘲自己是 AI 社区的反叛者 因
  • C++ 可扩展的内存缓冲区

    类声明 CMemBuffer h pragma once class CMemBuffer public CMemBuffer DWORD dwSize 0 CMemBuffer void 申请内存 BOOL Realloc DWORD d