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);的主要内容,如果未能解决你的问题,请参考以下文章

C ++的STL中的erase()实际上是否删除了元素?

关于代码片段的时间复杂度

YASnippet - emacs 的代码片段管理工具

Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段

深度学习之tensorflow框架(中)

以下代码片段 C++ 的说明