前言
本次笔记记录如下知识点
- 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库的代码实现
|