class MyString
{
public:
MyString(int length):_ptr(alloca(length))
{
}
//Copy Constructor, destructor, other member functions.
private:
void* _ptr;
};
int main()
{
MyString str(44);
return 0;
}
它是否在主函数的末尾释放或者在构造函数执行后立即释放? 如果上述代码按预期工作,是否有像这样的字符串类是一个好主意?何时使用alloca为类成员释放内存?
更新:
它看起来像主要的危险是
- StackOverflow的
- 构造的内联
我想我可以用ALLOCA为照顾StackOverflow上的小尺寸和malloc /免费的大尺寸。我想必须有一些非可移植的编译器特定的方式来强制编译器内联。
我很感兴趣,因为字符串类是在任何c + +项目中广泛使用的东西。如果我明白了这一点,我预计会有巨大的性能提升,因为大部分分配都会进入堆栈,否则会进入堆栈。这将是一个实用程序,最终用户不会意识到内部。
这取决于您选择的优化级。它只在构造函数内联时才起作用。不要使用这个。 –