Функция сжатия массива выдает ошибку утверждения

Я практикую, как создать 2D-массив и уменьшить его.
Это моя функция:

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

Проблема в том, что это дает мне отладочное утверждение не удалось.
Я не понимаю, что я сделал не так или как я могу это исправить !!!
Все, что ты имеешь в виду, может мне помочь !!
благодарю вас

3

Решение

Это неверно:

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

Вам не нужен внешний цикл, так как он вызывает удаление уже удаленных массивов, что приводит к неопределенному поведению.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector