gpt4 book ai didi

c++ - 为什么分配堆内存比分配栈内存快得多?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:39 25 4
gpt4 key购买 nike

我尝试在堆和栈内存中为 10^7 个整数分配空间,看看哪个更快。显然在堆内存中分配要快得多,但我不明白原因。

#include <bits/stdc++.h>
#include <chrono>

using namespace std;
using namespace std::chrono;

int main()
{
high_resolution_clock::time_point t1 = high_resolution_clock::now();

int *p = new int[1e7];

high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<microseconds>( t2 - t1 ).count();
cout << duration / 1e6 << "\n"; // 5e-06



t1 = high_resolution_clock::now();

vector<int> v(1e7);

t2 = high_resolution_clock::now();
duration = duration_cast<microseconds>( t2 - t1 ).count();
cout << duration / 1e6 << "\n"; // 0.112284

return 0;
}

最佳答案

new int[1e7]为 1e7 int 分配空间值并且不初始化它们。

vector<int> v(1e7);创建一个 vector<int>堆栈上的对象,该对象的构造函数为 1e7 int 分配空间堆上的值。它初始化每个 int值为 0。

速度上的差异是因为初始化。

为了比较堆栈分配的速度,您需要在堆栈上分配一个数组:

int data[1e7];

但要注意:这很有可能会失败,因为堆栈不够大,无法容纳那么大的数组。

关于c++ - 为什么分配堆内存比分配栈内存快得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273877/

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