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};