程序给出错误的分配错误
Program giving bad alloc error
我写了一个程序来生成一个方形填充矩阵,其中填充了 1 到 n^2 的螺旋形元素 order.It 给出了错误的分配错误。
错误消息类似于在抛出 'std::bad_alloc' 的实例后调用的终止
什么():std::bad_alloc
中止(核心转储)
有人可以建议我如何删除它并使用 gdb
删除此类错误
这是代码
#include<iostream>
#include<vector>
using namespace std;
vector<vector<int> > generateMatrix(int A)
{
if(A<=0)//if value of A return null matrix
return vector<vector<int> >();
vector<int>v(A,0);
vector<vector<int> >result(A,v);
int i, k = 0, l = 0;
int n = A, m = A;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
int c = 1;//used for numbering
while (k < m && l < n)
{
/* Print the first row from the remaining rows */
for (i = l; i < n; ++i)
{
result[k][i]=c++;
}
k++;
/* Print the last column from the remaining columns */
for (i = k; i < m; ++i)
{
result[i][n-1]=c++;
}
n--;
/* Print the last row from the remaining rows */
if ( k < m)
{
for (i = n-1; i >= l; --i)
{
result[m-1][i]=c++;
}
m--;
}
/* Print the first column from the remaining columns */
if (l < n)
{
for (i = m-1; i >= k; --i)
{
result[i][l]=c++;
}
l++;
}
}
}
int main()
{
int n;
cin>>n;
vector<vector<int> >X(n,vector<int>(n));
X = generateMatrix(n);
for(int i = 0; i < n; i++)
{
cout<<'\n';
for(int j = 0;j<n;j++)
{ cout<<X[i][j]<<'\t';}
}
return 0;}
您忘记了 return
实际生成的矢量,您只涵盖了 A <= 0
个案例。那是未定义的行为。如果您启用了编译器警告,您应该会看到
warning C4715: 'generateMatrix' : not all control paths return a value
我写了一个程序来生成一个方形填充矩阵,其中填充了 1 到 n^2 的螺旋形元素 order.It 给出了错误的分配错误。 错误消息类似于在抛出 'std::bad_alloc' 的实例后调用的终止 什么():std::bad_alloc 中止(核心转储) 有人可以建议我如何删除它并使用 gdb
删除此类错误这是代码
#include<iostream>
#include<vector>
using namespace std;
vector<vector<int> > generateMatrix(int A)
{
if(A<=0)//if value of A return null matrix
return vector<vector<int> >();
vector<int>v(A,0);
vector<vector<int> >result(A,v);
int i, k = 0, l = 0;
int n = A, m = A;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
int c = 1;//used for numbering
while (k < m && l < n)
{
/* Print the first row from the remaining rows */
for (i = l; i < n; ++i)
{
result[k][i]=c++;
}
k++;
/* Print the last column from the remaining columns */
for (i = k; i < m; ++i)
{
result[i][n-1]=c++;
}
n--;
/* Print the last row from the remaining rows */
if ( k < m)
{
for (i = n-1; i >= l; --i)
{
result[m-1][i]=c++;
}
m--;
}
/* Print the first column from the remaining columns */
if (l < n)
{
for (i = m-1; i >= k; --i)
{
result[i][l]=c++;
}
l++;
}
}
}
int main()
{
int n;
cin>>n;
vector<vector<int> >X(n,vector<int>(n));
X = generateMatrix(n);
for(int i = 0; i < n; i++)
{
cout<<'\n';
for(int j = 0;j<n;j++)
{ cout<<X[i][j]<<'\t';}
}
return 0;}
您忘记了 return
实际生成的矢量,您只涵盖了 A <= 0
个案例。那是未定义的行为。如果您启用了编译器警告,您应该会看到
warning C4715: 'generateMatrix' : not all control paths return a value