gpt4 book ai didi

c++ - 最快分配和释放动态大小数组对象作为局部变量的方法

转载 作者:行者123 更新时间:2023-11-30 03:53:58 27 4
gpt4 key购买 nike

最快分配和释放动态大小数组对象作为局部变量的方法是什么?

这是标准但最慢的方法:

void func1(int n)
{
int* array = new int[n];
func2(array);
delete array;
}

这是一种更好的方法,但它在某些编译器和操作系统中效果不佳,有时代码维护也很脆弱。

void func1(int n)
{
int* array = _alloca(sizeof(int)*n);
func2(array);
_freea(array);
}

这是通用且快速的(我现在所做的),但这很麻烦,有时会遇到单例销毁顺序问题。

void func1(int n)
{
int* array = pool_alloc(sizeof(int)*n);
func2(array);
pool_free(array);
}

有没有更好的方法兼顾性能和便利性?

最佳答案

创建一个名为 Buffer 的辅助类。

struct Buffer
{
Buffer(size_t s = 100) : size_(s), data_(new char[s]) {}
~Buffer() { delete [] data_; }

void assureMinSize(size_t s)
{
if ( s > size_ )
{
delete [] data_;
size_ = s;
data_ = new char[s];
}
}

size_t size_;
char* data_;
};

并将其用作:

void func1(int n)
{
static Buffer buffer;
buffer.assureMinSize(n);
func2(buffer.data_);
}

关于c++ - 最快分配和释放动态大小数组对象作为局部变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29838075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com