⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 membuffer.cpp

📁 内存管理程序
💻 CPP
字号:
/*=========================================================
*	File name	:	membuffer.cpp
*	Description	:	
*	Modify  	:	
*=========================================================*/

#include "membuffer.h"
#include "memmgr.h"

membuffer::membuffer()
{
	 m_maxlen =m_curlen = 0;
	 m_pData = 0;
	 m_bFree = TRUE;
}

membuffer::membuffer(int len)
{
	 m_maxlen = len;
	 m_curlen = 0;
	 m_bFree = TRUE;
	 m_pData = MyMemAlloc(len);
	 Clear();
}

membuffer::membuffer(char *pBuf,int len)
{
	 m_maxlen =m_curlen = 0;
	 m_pData = 0;
	 m_bFree = FALSE;
}



membuffer::~membuffer()
{
	Close();
}

void membuffer::Close()
{
	 if(m_pData&&m_bFree)
	 {
		 MyMemFree(m_pData);
		 m_pData = NULL;
		 
	 }

	 if(m_bFree)
		 m_maxlen = 0;

	 m_curlen = 0;
}


void membuffer::Append(const char *data,int datalen)
{
	if(data&&datalen>0)
	{
		int len = datalen+m_curlen;
		if(len>m_maxlen)
		{
			//	m_pData = (BYTE*)MyMemReAlloc(m_pData,len);
		//	BYTE *p = MyMemAlloc(len);
		//	memcpy(p,m_pData,m_curlen);
		//	MyMemFree(m_pData,m_maxlen);
		//	m_pData = p;
			//	ASSERT(m_pData);
			datalen = m_maxlen - m_curlen;
			len = m_maxlen;
		}
		memcpy(m_pData+m_curlen,data,datalen);
		m_pData[len] = '\0';
		m_curlen = len;
	//	ASSERT_MyMemBlock(m_pData,m_maxlen);
	}

}

void  membuffer::SetMaxLength(int maxlen)
{
	Close();
	m_maxlen = maxlen;
	m_curlen = 0;
	m_pData = MyMemAlloc(maxlen);
	Clear();
}

void  membuffer::SetBufLength(BYTE *pBuf,int maxlen)
{
	Close();
	m_pData = pBuf;
	m_maxlen = maxlen;
	m_bFree = FALSE;
	Clear();
}


void  membuffer::SetSpaceEnd()
{
	if(m_pData==NULL)
		return;

	BYTE *p = (BYTE*)strchr((const char*)(m_pData), ' ' );
	if(p)
	{
		*p = '\0';
		m_curlen = p - m_pData;
	}
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -