你可以在堆栈上放多少数据?

use*_*073 2 c++ visual-c++

我尝试在堆栈上创建一个~975KB的数组,然后崩溃了.

const int size = 500;
cout << (sizeof(float)*size*size)/1024 << endl;
float myArray[size*size]; // crash
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常小的空间.在初始化变量之前,有没有办法知道有多少空间可用(总计和当前空间)?

Mat*_*son 6

几乎所有系统都限制堆栈.允许的大小取决于OS /编译器组合.将大量数据放在堆栈上是一个糟糕的主意.使用C++标准类型(例如vector)或使用您自己的动态内存分配.你永远不知道什么时候其他一些函数会增加一些额外的堆栈,而且突然之间,你超越了极限 - 最好不要达到堆栈最大值附近的任何地方.