我有这样简单的循环,通过基类的指针数组运行:GCC在调试模式下崩溃,在发布模式下运行良好?
Object * objects[2];
objects[0] = new GreenObject;
objects[1] = new RedObject;
objects[2] = new BlueObject;
for (int i = 0; i < 3; ++i) {
cout << i << " ";
objects[i]->info();
}
在调试模式下,在循环的第三次迭代程序崩溃,输出i
,之后立即在调用info()
方法。在发布模式中不会发生这种情况,它正在运行。这不是该对象的问题,因为即使我使用其他派生类,它也会锁定。
GCC 4.4.0在Windows 7 64位
任何想法?
是的,我知道该阵列比它需要的时间短,我的挫败感是它在发布模式下工作。 – dtech 2012-08-10 12:54:28
它可能有帮助,如果你提到你知道它是在问题中的错误,说“它正在运行,因为它应该”_暗示你认为代码是正确的。 – 2012-08-10 13:01:56
您的程序的内存布局可能因版本和调试设置而异。正如hmjd所说,这完全是未定义的行为。 – Black 2012-08-10 13:02:55