前言 
本次笔记记录如下知识点  
- pool库(内存池)
 - object_pool库(内存池)
 - singleton_pool库(内存池)
   
一、pool库(内存池) 
1、pool库的原理  
 
2、pool库的作用  
 
3、pool库的代码实现  
template <typename UserAllocator = default_user_allocator_new_delete>
class pool
{
public:
	
	exception pool(size_type requested_size);
	~pool();
	
	size_type get_requested_size() const;
	
	void*     malloc();
	void*     ordered_malloc();    
	void*     ordered_malloc(size_type n); 
	bool      is_from(void* chunk) const; 
	
	
	void      free(void* chunk);
	void      ordered_free(void* chunk);
	void      free(void* chunks, size_type n);
	void      ordered_free(void* chunks, size_type n);
	
	
	bool      release_memory();  
	bool      purge_memory();    
};
  
4、pool库的函数使用  
#include <iostream>
#include <boost/pool/pool.hpp>
#include <stdlib.h>    
#include <crtdbg.h>
using namespace std;
using namespace boost;
int main()
{
	
	pool<> p1(sizeof(int));
	int* vec1[100];
	for (int i = 0; i < 100; i++)
	{
		
		vec1[i] = static_cast<int*>(p1.malloc());
	}
	int* chunk = static_cast<int*>(p1.malloc());
	
	if (p1.is_from(chunk))
	{
		cout << "申请的内存时内存池中的";
	}
	for (int i = 0; i < 100; i++)
	{
		
		p1.free(vec1[i]);
		vec1[i] = NULL;
	}
	
	p1.purge_memory();
	
	_CrtDumpMemoryLeaks();
	return 0;
}
  
二、object_pool库(内存池) 
1、object_pool库的原理  
 
2、object_pool库的作用  
 
3、object_pool库的代码实现  
 
                
                
                
        
    
 
 |