我继承了具有许多函数(不是类成员)的代码,避免像这样溢出堆栈(注意:值不会保存在函数调用上,因此语义static
是不必要的):
void func()
{
static BIGSTRUCT foo[BIGNUM];
static BIGGERSTRUCT bar[BIGGERNUM][BIGGERNUM];
// etc...
}
对于一维情况,std::unique_ptr<BIGSTRUCT []> foo(new BIGSTRUCT[BIGNUM]);
有效,但有一种解决二维情况的简单方法吗?
答案 0 :(得分:2)
std::unique_ptr
可以是std::unique_ptr
。甚至是二维缓冲区。
但是,对于大多数遗留代码的情况,最好只使用std::vector
替换数组,因此您不必担心内存泄漏。