前面对内存池已经有了一个大致的复习,现在实现一个简单的固定内存池
一、MemoryPool.h
#ifndef __SOFT_COLLECTION_H__
#define __SOFT_COLLECTION_H__
#include <iostream>
#include <string>
#include <errno.h>
#include <unistd.h>
#include <stdint.h>
#include <memory.h>
#define MEMPOOL_ALIGNMENT 8
struct memory_block
{
//参数直接赋值
memory_block(unsigned short type = 1, unsigned short unit_size = 0);
virtual ~memory_block(){
};
unsigned short size;
unsigned short free;
unsigned short first;
//unsigned short dummy_align;
memory_block* next;
char data[1];
static void* operator new(size_t, unsigned short type, unsigned short unit_size)
{
return ::operator new(sizeof(memory_block) + type * unit_size);
}
static void operator delete(void* p, size_t)
{
::operator delete(p);
}
};
class memory_pool
{
public:
//第一个参数动态分配(构建对象时分配),后两个参数直接赋值
memory_pool(unsigned short _unit_size, unsigned short _init_size