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

📄 c_buf.cpp

📁 HP共享内存实现,只要将sql语句配置好,装载共享内存即可
💻 CPP
字号:
/***********************************************************************
 * Module:  c_buf.cpp
 * Author:  Administrator
 * Modified: 2005年9月29日 11:46:24
 * Purpose: Implementation of the class c_buf
 * Comment: 内存分配类. 主要作用, 避免内存中出现过多的碎片, 在内存中以1m来为单位来分配内存, 当然这个单位是可以调整的。 对于大数据量, 就用大的值。可以暂时不考虑释放内存。
 ***********************************************************************/

#include "c_buf.h"

////////////////////////////////////////////////////////////////////////
// Name:       c_buf::getSpace()
// Purpose:    Implementation of c_buf::getSpace()
// Return:     unsigned char*
////////////////////////////////////////////////////////////////////////

void* c_buf::getSpace(void)
{
   // TODO : implement

	int sum_byte = unit*10*1024;
	if( buf_count == 0 || ( byte_used + record_size ) > sum_byte )
	{
		if( buf_count >= MAX_BUF_COUNT )
		{
			cout<<"块太多, 不行了, 请加大unit"<<endl;
			release();
			exit(1);
		}

		buf[buf_count] = malloc( sum_byte );

		if( buf[buf_count] == NULL )
		{
			cout<<"内存申请失败"<<endl;
			exit(1);
		}

		buf_count++;

		byte_used = 0;
	}

//小于等于一个buf的总字节数

	int tt = byte_used;

	byte_used += record_size;
	return (char*)buf[ buf_count -1] + tt;
}


void  c_buf::recvSpace(void)
{
	byte_used -= record_size;
}


////////////////////////////////////////////////////////////////////////
// Name:       c_buf::release()
// Purpose:    Implementation of c_buf::release()
// Return:     void   将申请到的内存释放掉  
////////////////////////////////////////////////////////////////////////

void c_buf::release(void)
{
   // TODO : implement
//将缓存释放掉
	for( int i = 0; i< buf_count; i++ )
	{
		if( buf[i] != NULL )
		{
			free( buf[i] );
			buf[i] = NULL;
		}
	}
	buf_count = 0;
	byte_used = 0;
}

void c_buf::display()
{
	int buf_sum = unit*10*1024*buf_count;
	cout<<"申请的内存大小为:"<<buf_sum<<endl;

	cout<<"buf_count:"<<buf_count<<endl;
	cout<<"byte_used:"<<byte_used<<endl;
	if( buf_count > 0 )
		cout<<sizeof( buf[0] )<<endl;
}

⌨️ 快捷键说明

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