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;
}
Освобождается ли он в конце основной функции или сразу после выполнения конструктора?Является ли хорошей идеей иметь строковый класс, подобный этому, если приведенный выше код работает должным образом?
Обновление:
Похоже, что главная опасность
- StackOverflow
- Встраивание конструктора
Я думаю, что я могу позаботиться о StackOverflow, используя alloca для небольших размеров и malloc / free для больших размеров.Я предполагаю, что должен быть какой-то непереносимый способ компилятора встроить компилятор.
Мне интересно, потому что строковый класс - это то, что широко используется в любом проекте c ++.Если я пойму это правильно, я ожидаю огромного прироста производительности, так как большая часть выделений идет в стек, который в противном случае попадет в кучу.Это будет утилита, и конечный пользователь не будет знать о внутренностях.