📄 c_buf.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 + -