我尝试在堆栈上创建一个~975KB的数组,然后崩溃了.
const int size = 500;
cout << (sizeof(float)*size*size)/1024 << endl;
float myArray[size*size]; // crash
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常小的空间.在初始化变量之前,有没有办法知道有多少空间可用(总计和当前空间)?
几乎所有系统都限制堆栈.允许的大小取决于OS /编译器组合.将大量数据放在堆栈上是一个糟糕的主意.使用C++标准类型(例如vector)或使用您自己的动态内存分配.你永远不知道什么时候其他一些函数会增加一些额外的堆栈,而且突然之间,你超越了极限 - 最好不要达到堆栈最大值附近的任何地方.
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |