C/C++教程

C++-new(p) T1(value);

本文主要是介绍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);的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!