dl
dl
memory
dl_memory_bank.h
浏览该文件的文档.
1
14
#pragma once
15
16
namespace
dl
17
{
19
template
<
typename
T>
20
class
MemoryBank
21
{
22
public
:
23
MemoryBank
() :
24
_p{ nullptr },
25
_cur{ 0 },
26
_size{ 0 }
27
{
28
}
29
30
void
Clear
()
31
{
32
//清空后显示析构
33
for
(
size_t
i = 0; i < _cur; ++i)
34
{
35
(_p + i)->~
T
();
36
}
37
_cur = 0;
38
}
39
40
template
<
typename
... Args>
41
T
*
Get
(Args&& ...args)
42
{
43
_check();
44
return
new
(_p + _cur++)
T
(args...);
45
}
46
48
T
*
begin
() {
return
_p; }
49
T
*
end
() {
return
_p + _cur; }
50
51
~MemoryBank
()
52
{
53
//需要显示析构
54
for
(
size_t
i = 0; i < _cur; ++i)
55
(_p + i)->~T();
56
free(_p);
57
}
58
private
:
59
T
* _p;
60
size_t
_cur;
//指向下一个空闲位置
61
size_t
_size;
62
63
void
_check()
64
{
65
//原有内存不会变化
66
if
(_cur >= _size)
67
{
68
_size = _size ? _size * 2 : 1;
69
_p = (
T
*)realloc(_p, _size *
sizeof
(
T
));
70
}
71
}
72
};
73
74
}
dl::MemoryBank::~MemoryBank
~MemoryBank()
定义
dl_memory_bank.h:51
dl::MemoryBank::end
T * end()
定义
dl_memory_bank.h:49
dl::MemoryBank::Clear
void Clear()
定义
dl_memory_bank.h:30
dl::MemoryBank::Get
T * Get(Args &&...args)
定义
dl_memory_bank.h:41
dl::MemoryBank::begin
T * begin()
支持C++迭代写法
定义
dl_memory_bank.h:48
dl::MemoryBank::MemoryBank
MemoryBank()
定义
dl_memory_bank.h:23
dl
定义
dl_array.h:22
dl::KeyCode::T
@ T
定义
dl_input.h:121
制作者
1.13.1