2012-12-07 75 views
2

嗨我有刪除對象數組的問題。 每當我開始我的代碼,它工作得很好,但當我關閉, 我收到錯誤:0xC0000005:訪問衝突讀取位置0xcccccccc。代碼如下所示:無法刪除對象數組C++

我初始化一個對象的實例,並立即創建一個空的數組。

Class* classObject[15]; 

之後,我在for循環中定義了空數組。

for(int i = 0; i < 15; i++){ 
    classObject[i] = new Class(); 
} 

當應用程序關閉時,下面的代碼應該刪除內存不足的數組。

for(int i = 0; i < 15; i++){ 
    delete classObject[i]; 
} 

而不是成功關閉,我得到訪問衝突錯誤。 我該如何解決這個問題,並在哪裏? 另外,有沒有其他方法可以在for循環中創建對象?

+2

你是否已經釋放了這些指針?或者將它們設置爲NULL或否則更改指針?使用智能指針(如['std :: shared_ptr'](http://en.cppreference.com/w/cpp/memory/shared_ptr))_might_可以緩解這個問題。 –

+7

對於這樣的問題,最好能提供一個演示行爲的完整示例。請參閱http://sscce.org –

+0

您可能會通過一些較早的操作損壞空閒空間舞臺。另一種可能是你在'Class'的析構函數中做了一些壞事。 –

回答

3
class A 
{ 
    public: 
     A():a(0){}; 
    private: 
     int a; 
}; 

int main() 
{ 
    A* arr[15]; 

    for(int i=0;i<15;i++) 
    { 
     arr[i] = new A(); 
    } 
    for(int i =0;i<15;i++) 
    { 
     delete arr[i]; 
    } 

    return 0; 
} 

我的代碼中沒有任何錯誤。您是否刪除過此點?