Tom*_*ski 5 c++ memory-management dynamic
让我们考虑以下两个代码
第一:
for (int i=0;i<10000000;i++)
{
char* tab = new char[500];
delete[] tab;
}
Run Code Online (Sandbox Code Playgroud)
第二:
for (int i=0;i<10000000;i++)
{
char tab[500];
}
Run Code Online (Sandbox Code Playgroud)
峰值内存使用率几乎相同,但第二个代码运行速度比第一个快20倍.
问题
是因为第一个代码数组存储在堆上,而第二个数组存储在堆栈中?
是因为第一个代码数组存储在堆上,而第二个数组存储在堆栈中?
是的,堆栈分配要快得多,因为所有第二个代码示例正在进行移动(添加/减少)堆栈指针而不是操纵堆.
如果您想了解更多,这两个问题涵盖了这一主题