3

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

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];
}

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

4

1 回答 1

2

这是不正确的:

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

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

于 2012-11-18T19:28:07.097 回答