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 用于小尺寸并使用 malloc/free 用于大尺寸来处理 StackOverflow。我想必须有一些非便携式编译器特定的方式来强制编译器内联。
我很感兴趣,因为字符串类是在任何 c++ 项目中广泛使用的东西。如果我做对了,我预计会有巨大的性能提升,因为大多数分配都进入堆栈,否则会进入堆。这将是一个实用程序,最终用户不会知道内部结构。