题目大概如下:
template<typename T>
class Test
{
public:
Test(int len)
{
data =(char*) new [sizeof(T) *( len+ len/2));
}
void Constructor()
{
for(int i=0;i<len;i++)
::new(data+i)T;
}
void Destroy()
{
delete [](char*)data;
}
T* data;
};
今早笔试遇到的,让我改正,我觉得问题有2个,
1.分配大小哪里,为什么要多出 len/2个来???
2.利用placement new的时候,少了len2/
3.析构的时候,由于转换为char*,那么是无法调用析构函数的
大家认为这个代码有什么问题, 题目大概是这个样子的 |