64,636
社区成员
发帖
与我相关
我的任务
分享
遇到一个奇怪的笔试题目
题目大概如下:
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*,那么是无法调用析构函数的