【问题标题】:shrink array function gives assertion error收缩数组函数给出断言错误
【发布时间】:2012-11-18 19:10:34
【问题描述】:

我正在练习如何创建一个二维数组并缩小它。 这是我的功能:

void Resize(int rownums,int columnnums)
{
    MyMatrix newM(rownums,columnnums);
    for(int i=0;i<rownums;i++)
        for(int j=0;j<columnnums;j++)
            newM.table[i][j]=table[i][j];

    for(int i=0;i<rows;i++)
    for(int j=0;j<columns;j++)
    delete []table[j];

    delete[]table;
    rows=newM.rows;
    columns=newM.columns;
    table=new string*[rows];
    for(int i=0;i<rows;i++)
        table[i]=new string[columns];

    for(int i=0;i<rows;i++)
        for(int j=0;j<columns;j++)
            table[i][j]=newM.table[i][j];
}

问题是它给了我一个调试断言失败。 我不明白我做错了什么或如何解决它! 你有什么想法可以帮到我!! 谢谢

【问题讨论】:

  • 请提供MyMatrix类和项目分配代码。

标签: c++ assertions


【解决方案1】:

这是不正确的:

for(int i=0;i<rows;i++)
for(int j=0;j<columns;j++)
delete []table[j];

您不需要外部循环,因为它会导致删除已删除的数组,从而导致未定义的行为。

【讨论】:

  • for(int i=0;i
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-07
  • 2017-08-18
  • 2022-11-11
相关资源
最近更新 更多