C++ 的 RALL 实现
1 |
|
RALL 机制便是通过利用对象的自动销毁,使得资源也具有了生命周期,有了自动销毁(自动回收)的功能。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
template<typename T>
class auto_release_ptr
{
public:
auto_release_ptr (T *t) :_t (t){};
~auto_release_ptr ()
{
delete _t;
};
T * getPtr ()
{
return _t;
}
private:
T *_t;
};
int main ()
{
for (int i = 1; i <= 10000000; i++)
{
auto arp = auto_release_ptr<int32_t>(new int32_t [3]);
int32_t *ptr = arp.getPtr ();
//auto_release_ptr 有一个数据成员在构造时完成了初始化并指向了 new 出来的空间
ptr [0] = 1;
ptr [1] = 2;
ptr [2] = 3;
}
system ("pause");
return 0;
}
更多的如智能指针,lock_guard 都利用了 RALL 机制来实现。
C++ learing 总览
C++ 四舍五入
C++ 取出一個數的每一位
C++ 利用 rand () 產生隨機數
C++ 小知识点总结
C++ 解釋一個語句
C++ #include
C++ RALL
C++ 运算符
C++ 万能标头档
讓 Dev C++ 支持 C++11