用C/C++编程时;作为经验法则,将使用什么替代char array[MAX_PATH+1]={0}
的分界点是:
char *array=nullptr;
array=new char [MAX_PATH+1];
...code...
delete [] array;
在什么时候采取行动来保留堆栈上的空间?
20年前,我曾教过您应该在堆上分配32字节以上的所有数组,而不考虑性能开销,并为简单变量保存堆栈。我已经看到很多现代示例代码非常随意地使用了堆栈,因此这种想法发生了变化吗?
最佳答案
链接器设置堆栈大小。在Windows上最多可以处理1 GB的任何静态分配(在其他系统上可能有所不同)。但是,Windows上的默认堆栈大小为1MB(Linux上为8MB)。因此,动态分配的主要好处是您不知道事前的大小,或者您的程序是否需要一些非常大的分配。
关于c++ - C++-本地堆栈数组与动态分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25253953/