动态分配内存

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倍.

问题
是因为第一个代码数组存储在堆上,而第二个数组存储在堆栈中?

Yac*_*oby 5

是因为第一个代码数组存储在堆上,而第二个数组存储在堆栈中?

是的,堆栈分配要快得多,因为所有第二个代码示例正在进行移动(添加/减少)堆栈指针而不是操纵堆.

如果您想了解更多,这两个问题涵盖了这一主题