c++ - 简单数组导致异常

标签 c++ visual-studio-2010

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    float x[1000][1000];

    return 0;
}

我得到“s.exe 中 0x01341637 处的第一次机会异常:0xC00000FD:堆栈溢出。”为什么?

最佳答案

您的数组太大,无法放入堆栈。您没有足够的堆栈空间容纳 1000 * 1000 元素。

您需要在堆上分配数组。您可以使用 new 关键字来执行此操作,但更简单的方法是仅使用 std::vector

std::vector<std::vector<float> > floats(1000);
for (unsigned i = 0; i != floats.size(); ++i) floats[i].resize(1000);

这将为您提供一个二维浮点 vector ,每个 vector 有 1000 个元素。

另见:Segmentation fault on large array sizes

关于c++ - 简单数组导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629712/

相关文章:

c++ - C/C++ 中的减法和与无符号整数的比较定义明确吗?

asp.net - <asp :ContentPlaceholder> generates parser exception 中的 &lt;meta&gt; 标记

c++ - QT creator和Designer的区别——起步QT

visual-studio-2010 - TFS 2010(团队资源管理器)-工作项查询结果窗口的默认 Split View

javascript - C++ std::flush的JavaScript等效项是什么?

c++ - 如何使用C++获取显示适配卡的内存大小?

c# - VS2010 : Use namespace from another project within the solution?

c# - 在 Visual Studio 中使用 Debugger Visualizers 而无需将其 dll 程序集复制到 VS 的文件夹

c++ - C++ 中的 STL 和重载

c++ - 是否有在标准容器中使用 unique_ptr 的透明方法?