📄 memorypool.cpp
字号:
// MemoryPool.cpp: implementation of the MemoryPool class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MemoryPool.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
MemoryPool::MemoryPool(long datasize,long datablksize,long msgsize, int msgblksize)
{
pool_size = datasize + msgsize;
msg_size = msgsize;
data_size = datasize;
msg_blksize = msgblksize;
data_blksize = datablksize;
data_head = static_cast<float*>(malloc(pool_size*sizeof(float)));
message_head = data_head + data_size;
for(int i= 0;i<data_size/data_blksize;i++)
{
freedata_list.push(data_head+i*data_blksize);
}
for(i=0;i<msg_size/msgblksize;i++)
{
freemsg_list.push(message_head+i*msg_blksize);
}
cout << "the MemoryPool is:" << endl;
cout <<"data_head is :" << data_head <<'\t' << "message_head is:" << message_head <<endl;
cout << endl;
cout << "Memory block info:" << endl;
}
MemoryPool::~MemoryPool()
{
free(data_head);
}
float* MemoryPool::GetDataBlk()
{
if(freedata_list.empty())
return 0;
float* datablk = freedata_list.front();
usedata_list.push(datablk);
freedata_list.pop();
return datablk;
}
void MemoryPool::ReturnDataBlk(float *data)
{
usedata_list.pop();
freedata_list.push(data);
}
float* MemoryPool::GetMsgBlk()
{
if(freemsg_list.empty())
return 0;
float* msgblk = freemsg_list.front();
usemsg_list.push(msgblk);
freemsg_list.pop();
return msgblk;
}
void MemoryPool::ReturnMsgBlk(float *msg)
{
usemsg_list.pop();
freemsg_list.push(msg);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -