C++ 函数内部的大型静态数组与局部数组

C++ 函数内部的大型静态数组与局部数组,c++,arrays,static,C++,Arrays,Static,这段代码: #include <array> #include <iostream> int function() { const int N=10000000; std::array<double, N> array{0.0}; std::cout<<"N="<<N<<std::endl; return 0; } int main(int, char **) { function(); exit

这段代码:

#include <array>
#include <iostream>

int function()
{
  const int N=10000000;
  std::array<double, N> array{0.0};
  std::cout<<"N="<<N<<std::endl;
  return 0;
}

int main(int, char **)
{
  function();
  exit(0);
}
该程序仅在word中的
N下工作,是。:)

为了完整起见,值得一提的是,您还可以使用
new
操作符在堆上分配数组


您还可以选择将数据存储在
std::vector
中。性能/灵活性权衡与
std::array
有点不同,但堆栈大小的问题甚至不会出现在堆栈上的向量上(因为底层存储是动态分配的)。

总之,是:)您在找这个:?你还忘了给数组命名。哦,是的。更正。我使用本地std::vector vec(N,0.0)进行检查,没有使用static而不是std::array。它可以工作,但在N=10^9时,我的计算机被冻结,而使用std::array时它工作正常;如果不使用0.0初始化“数组”,则即使在N>10^7时,程序也不会出现分段错误。为什么?
Segmentation fault (core dumped)
static std::array<double, N>{0.0};