2013-12-08 34 views
0

當我的程序遇到此代碼時,出現運行時錯誤。我相信刪除是造成它,我只是沒有看到發生了什麼問題。刪除動態數組C++時發生錯誤

下面是函數:(FavShows是前面所定義的一類)

void classInit() 
{ 
    int numOfRecs; 
    cout << "How many records will you enter?" << endl; 
    cin >> numOfRecs; 
    FavShows *m = new FavShows[numOfRecs]; 

    for(int i = 0; i < numOfRecs; i++) 
    { 
     m[i].initRec(); 
    } 

for(int i = 0; i < numOfRecs; i++) 
{ 
    m[i].printRec(); 
} 
delete m; 
} 

我接收狀態的錯誤: 誤差在dbgdel.cpp(ⅰ假設這是庫中的一個的memeber ) 表達式:_BLOCK_TYPE_IS_VALID(pHead-> nBlockUse)

+2

應該調用'delete [] m' – billz

回答

3

只需使用std::vector,避免痛苦。


對於代碼給出,注意一個new[]需要delete[],不是純單對象delete


隨着std::vector它更容易只是計數而不是問了,前面有多少由用戶輸入的記錄。對於每個輸入的記錄,使用push_back將其添加到矢量的末尾。然後從一個空矢量開始。

+0

FACEPALM,謝謝,修復它,我一定累了! – CavemanAGz

+0

我會試一試,我們已經涵蓋了矢量,但是如果我們使用矢量,我們的最終將會得到額外的功勞。謝謝您的幫助 – CavemanAGz