《STL源码剖析》第二章问题杂烩

近期开始阅读侯捷《STL源码剖析》,第二章有许许多多我遇到的问题,在此汇总一下

Placement new

书中的使用

出现在书中P51

语法

new的语法
new的语法中有placement_params可选参数,当传递给new这个参数时,就是placement_new

作用

placement_new就是直接将一块内存空间指定给new,new直接在这些内存上执行构造

样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//样例1
void* operator new(std::size_t, void*)
//样例2
// within any block scope...
{
alignas(T) unsigned char buf[sizeof(T)];
// Statically allocate the storage with automatic storage duration
// which is large enough for any object of type `T`.
T* tptr = new(buf) T; // Construct a `T` object, placing it directly into your
// pre-allocated storage at memory address `buf`.
tptr->~T(); // You must **manually** call the object's destructor
// if its side effects is depended by the program.
} // Leaving this block scope automatically deallocates `buf`.

false_type和true_type

书中的使用

P51
书中是用来方便__destory_aux的调用,个人理解为重载,可以由__destroy直接调用两个不同作用的函数,通过false_type和true_type这两个不同的变量类型。

未完待续….

作者

xiaomaotou31

发布于

2021-08-18

更新于

2021-08-21

许可协议

评论