2012-04-09 44 views

回答

2

boost::array基于模板参数工作。模板参数不能是运行时值。所以不行。

此外,VLA仅适用于在堆栈中声明的数组(ObjType val[someInteger];)。如果你买不起堆分配,只要使用它们并不适用于数组声明对象(struct ObjType { int val[someInteger]; };内。因此,即使一个模板参数可以是运行时的值,它不会帮你的。

std::vector分配器从预分配内存的“堆栈”中抽取

+0

是否STL,Boost或其他提供这样的堆栈式分配器还是必须自己编写? – 2012-04-09 17:02:20

+0

我相信STL只提供' std :: allocator',它使用'new'和'delete'.boost确实提供了一些分配器,包括一个池内存分配器(http://www.boost.org/doc/libs/1_49_0/libs/pool/doc /html/index.html),它可以做你想做的事情,否则,你将会拥有e写它。 – 2012-04-09 17:46:16