2012-12-07 76 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; 
} 

我的代码中没有任何错误。您是否删除过此点?