这个:
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/