2012-11-18 36 views
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]; 
} 

的問題是,它給了我一個調試斷言失敗。 我不明白我做錯了什麼或如何修復它! 任何你想到的都可以幫助我! 謝謝

+0

請提供MyMatrix類和項目分配的代碼。 –

回答

2

這是不正確的:

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

你不需要外循環,因爲它會導致已被刪除陣列的缺失,導致不確定的行爲。

+0

for(int i = 0; i user1834091