c++ - 为什么这会给我一个段错误?

标签 c++ multidimensional-array segmentation-fault

这个:

bool grid[1280][1024];
for (int x = 0; x<1280; x++)
{
    for (int y = 0; y<1024; y++)
    {
        grid[x][y] = false;
    }
}

工作正常,但是

bool grid[1280][1024];
bool grid2[1280][1024];

for (int x = 0; x<1280; x++)
{
    for (int y = 0; y<1024; y++)
    {
        grid[x][y] = false;
        grid2[x][y] = false;
    }
}

给我一​​个段错误。为什么?

最佳答案

可能堆栈空间不足,您的第二个示例在我的电脑上也崩溃了。尝试在堆上分配,或者更好,使用适当的容器类:

#include <array>
#include <vector>

typedef std::array<bool, 1280> line;

int main()
{
    std::vector<line> grid(1024);
    std::vector<line> grid2(1024);

    // no initialization to false necessary
}

请注意我是如何切换宽度和高度的。您可能希望您的元素以这种方式对齐以确保快速线性访问。

关于c++ - 为什么这会给我一个段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004225/

相关文章:

python - 如何将 3D 数组转换为 python 中的 2D 数组列表?

c++ - 使用复制构造函数时,是否在复制构造函数之前初始化了类数据成员?

c++ - 如何定义类类型到函数指针的转换?

c++ - Stroustrup 的 The C++ Programming Language 有错误吗?

c++ - 合成类模板所需的T的接口(interface)

python - 从 1 维数据 reshape 生成 4 维数组

php - 如何将mysql查询数据打印到php多维数组中?

c - x86 程序集中出现奇怪的段错误

c++ - 调用 glDrawElements 时出现段错误

c++ - 自定义类构造中的段错误