2d数组导致运行时错误
2d array causing run time error
这是我的代码,奇怪的是,它的摘录工作得很好。但是,由于此数组ss,主程序出现运行时错误。
#define FOR(i,n) for(i=0;i<n;i++)
unordered_map<int,int>m;
int ss[1000][1000]={0};
FOR(i,n){
FOR(j,n){
if( (i+1 < n) && A[i][j]==A[i+1][j]+1 )
{
if(ss[i][j]==-1)ss[i+1][j]=A[i][j];
else ss[i+1][j]=ss[i][j];m[ss[i+1][j]]++;
}
if((j+1 < n) && A[i][j]==A[i][j+1]+1)
{if(ss[i][j]==-1)ss[i][j+1]=A[i][j];
else ss[i][j+1]=ss[i][j];m[ss[i][j+1]]++;
}
当我试图以m为单位增加它的值时,它会导致运行时错误。
如果sizeof(int)
在您的平台上为4,则ss
将需要大约4 MB的内存。对于您的平台来说,这可能是太多的堆栈内存。使用堆内存来解决这个问题。
尝试
std::vector<std::vector<int>> ss(1000, std::vector<int>(1000, 0));
相反。
我认为您必须在FOR(i,n)之前定义整数变量"i和j";
试试这个:
int ss[1000][1000]={0};
int i,j;
FOR(i,n){
FOR(j,n){
if( (i+1 < n) && A[i][j]==A[i+1][j]+1 )
{
if(ss[i][j]==-1)ss[i+1][j]=A[i][j];
else ss[i+1][j]=ss[i][j];m[ss[i+1][j]]++;
}
if((j+1 < n) && A[i][j]==A[i][j+1]+1)
{if(ss[i][j]==-1)ss[i][j+1]=A[i][j];
else ss[i][j+1]=ss[i][j];m[ss[i][j+1]]++;
}
相关文章:
- 运行时C++数组初始化问题
- 如何在运行时阻止数组重置
- 由于 2D 数组声明,C++ 14 中的运行时错误
- 为什么C++允许在运行时将数组大小传递给函数以构造固定大小的数组?
- 删除动态数组会导致运行时错误
- 我在代码中收到一个运行时错误,该错误如何通过修改最多一个元素来查找数组是否可以变得不减少
- 将输入输入到 c++ 数组时出现运行时错误
- 访问导致运行时错误的动态数组
- 排列程序无法写入数组 - 运行时错误
- 在运行时更改数组尺寸
- 是什么导致了数组越界运行时错误?
- 2d 数组运行时错误 "std::bad_alloc()" what()
- 定义大小 (n*m) 的 2d 数组时运行时错误 >=10^6
- 使用 memcpy 将动态数组的内容复制到另一个动态数组上会产生运行时错误
- C++2d数组运行时错误
- 在运行时设置数组维度
- C/C++:如何在运行时检查数组是静态的还是动态的
- 正在运行时查找数组的大小
- 运行时边界数组的源级别检测有多困难
- 如何在运行时指定数组