在《源码剖析》中,对象的内存分配和构造、析构是分开的,调用construct时,没有疑问,会在已分配好的内存上来构造对象。
关于placement new的用法,http://www.cnblogs.com/felixYeou/archive/2009/04/15/1436209.html这篇文章讲的很详细。
如果对象需要析构,分为特化和泛化版本,特化版本包括:指针对象、char*、wchar_t*。
泛化版本包括用户自己定义的类型。
特化版本:
指针,直接调用指针所指对象的析构函数
char*和wchar_t*,不需要析构,无视
泛化版本:
用类型萃取器提取类型,判断是否有non-trivial的对象,若是有,则需要为整个内存一次次调用对象的构造函数,如果没有,则什么都不做。因为不用浪费时间在析构他们上,和char*、wchar_t*是一样的对待。