【发布时间】:2009-07-04 15:13:47
【问题描述】:
std::tr1::aligned_storage 的基本用法是什么?它可以用作如下数据类型 Foo 的自动内存吗?
struct Foo{...};
std::tr1::aligned_storage<sizeof(Foo)
,std::tr1::alignment_of<Foo>::value >::type buf;
Foo* f = new (reinterpret_cast<void*>(&buf)) Foo();
f->~Foo();
如果是这样,那么在 buf 中存储多个 Foo 怎么样,
std::tr1::aligned_storage<5*sizeof(Foo)
,std::tr1::alignment_of<Foo>::value >::type buf;
Foo* p = reinterpret_cast<Foo*>(&buf);
for(int i = 0; i!= 5; ++i,++p)
{
Foo* f = new (p) Foo();
}
它们是有效的程序吗?它还有其他用例吗? 谷歌搜索只提供有关aligned_storage 的文档,但很少涉及它的使用。
【问题讨论】:
标签: c++