程序提供错误的alloc错误

时间:2015-09-03 07:09:36

标签: c++ bad-alloc

我编写了一个关于生成一个方形填充矩阵的程序,该矩阵用1到n ^ 2的元素按螺旋顺序填充。它给出了一个错误的alloc错误。 抛出' std :: bad_alloc'的实例后,错误消息就像这个终止调用一样。   what():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;}

1 个答案:

答案 0 :(得分:1)

您忘记了return实际生成的向量,您只有A <= 0个案例。这是未定义的行为。如果您启用了编译器警告,则应该看到

warning C4715: 'generateMatrix' : not all control paths return a value