【发布时间】:2012-11-25 14:27:17
【问题描述】:
您好,我在删除对象数组时遇到问题。 每当我启动我的代码时,它工作得很好,但是当我关闭时, 我收到错误:0xC0000005:访问冲突读取位置 0xcccccccc。 代码如下:
我初始化一个对象的实例并立即从中创建一个空数组。
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 循环中创建对象吗?
【问题讨论】:
-
您是否已经释放了这些指针?或者将它们设置为
NULL或以其他方式更改指针?使用智能指针(例如std::shared_ptr)可能可以缓解这个问题。 -
对于此类问题,最好提供一个完整的示例来演示该行为。见sscce.org
-
您可能已经通过一些较早的操作破坏了可用空间区域。另一种可能是你在
Class的析构函数中做了坏事。 -
如果您解决了问题,请发布答案并接受。答案不在问题中。