?? 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來為單位來分配內存, 當然這個單位是可以調整的。 對于大數據量, 就用大的值??梢詴簳r不考慮釋放內存。
***********************************************************************/
#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 + -