得到一个段错误.为什么
Getting a segfault. Why?
我一直在grid[x][y] = rand();
上遇到段错误有什么帮助吗?我尝试用数字替换随机函数调用,看看这是否是导致问题的原因,但似乎并非如此。我不知道
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int x;
int y;
int gridMult;
int grid[gridMult][gridMult];
srand(time(NULL));
std::cout << "Enter grid size:: ";
std::cin >> gridMult;
while(x < gridMult){
while(y < gridMult){
grid[x][y] = rand();
y++;
}
x++;
}
for(int x = 0; x < gridMult; x++){
for(int y = 0; y < gridMult; y++){
std::cout << grid[x][y];
}
std::cout << std::endl;
}
return 0;
}
在这两行中
int gridMult;
int grid[gridMult][gridMult];
gridMult
是未定义的,那么您希望编译器如何正确调整数组的大小?
然后,当您进入循环时:
while(x < gridMult){
while(y < gridMult){
grid[x][y] = rand();
x
和y
也是未定义的。
通常,我会将这些循环更改为for
(或范围for
),以尽可能缩小迭代变量的范围。
如果希望它根据用户输入动态分配,请使用 std::vector
并将其resize
为所需的大小。
我还要补充一点,二维数组通常是在一维存储向量和其顶部的二维视图上实现的,而不是嵌套向量,所以你可能想阅读这些模式。
相关文章:
- 我的字符计数代码计算错误.为什么
- C++ 错误 为什么这个矢量不输出?
- 当在函数调用中递增值时,程序正常工作,但是如果我们在单独的行中增加值而不是呼叫函数,则会出现错误.为什么
- 我正在将QPixmap传递给QAbstractButton::setIcon而不是QIcon,但我没有得到错误...为什么?
- 在 ZeroMQ 中绑定订阅者套接字并连接发布者套接字会在代码运行时给出错误.为什么
- 分段错误:为什么这里的数组索引越界了
- Box2D不寻常的错误.为什么 0阻止错误
- c++分段错误:为什么这个程序给出运行时错误(SIGSEGV)
- 链接列表错误 - 为什么头和尾引用指向相同地址
- VC++的一个大错误?为什么初始值设定项列表不对结构进行值初始化
- 分配大量内存会产生错误?为什么
- 得到一个段错误.为什么
- 变量名称与函数名称相同,导致编译器错误.为什么
- 访问在相应类的静态函数中创建的对象的私有成员变量不会导致错误.为什么?
- Qt5:此代码使用msvc2012编译正常,但使用MinGW编译时出现错误..为什么?
- 奇怪的错误-为什么编译器试图调用复制构造函数
- 我在使用 std::map 时收到此错误.为什么
- 我写了这个程序来反转链表中的元素,在编译这个程序后,在reverse()中显示错误.为什么
- Valgrind报告写入错误?为什么?
- 编译器错误 - 为什么我不能在Sublime Text 2中构建C++?