C++-new(p) T1(value);
Posted 天津 唐秙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++-new(p) T1(value);相关的知识,希望对你有一定的参考价值。
在C++源码剖析这本书的第二章空间配置器中,有这么一段代码
template <class T1, class T2>
inline void _construct(T1 * p, const T2& value)
{
new(p) T1(value);
}
代码解读:
通过查询了解到这个操作叫做placement new,就是在指针p所指向的内存空间创建一个T1类型的对象,但是对象的内容是从T2类型的对象转换过来的,就是在已有空间的基础上重新调整分配的空间,类似于realloc函数。
这个操作就是把已有的空间当成一个缓冲区来使用,这样子就减少了分配空间所耗费的时间,因为直接用new操作符分配内存的话,在堆中查找足够大的剩余空间速度是比较慢的。
以上是关于C++-new(p) T1(value);的主要内容,如果未能解决你的问题,请参考以下文章
Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段