我有一个Ellipsoid结构,它是Object结构的派生物。基本上,我想在Scene结构中创建一个Object [3] [13]指针数组,我可以指向不同的Object衍生物。在函数中传递继承的类数组会创建内存泄漏?
struct Ellipsoid : public Object {
//...
}
在主要功能:
Ellipsoid ellipsoids[13];
addEllipsoids(3, ellipsoids); // this fills the array with valid ellipsoids, everything seems to be fine up until this point
// printing the contents here, everything is good
scene.addObjects(ellipsoids);
这里打印 “椭圆” 阵列后,一切似乎都不错。
在场景结构:
struct Scene{
int arr_num;
Object* objects[3];
void addObjects(Object* o){
// printning the o[0], o[1], ... contents here, getting garbage..
objects[arr_num++] = o;
}
当我在这里打了* O含量(从0..12)甚至在我将它们添加到对象数组,我得到讨厌的内存垃圾结果。
这是作业,我不能使用std :: vector和这样的东西,只有非常基本的东西。我真的不知道这里有什么问题。
可能重复[?可以将指针基点至派生对象的数组] (http://stackoverflow.com/questions/7196172/can-a-pointer-to-base-point-to-an-array-of-derived-objects) – user2079303 2014-11-05 13:14:17
如果你从课程中学到了一件事,那么我希望平淡无奇的数组是可怕的,当你被允许最终使用它们时,你会欣赏标准容器。 – user2079303 2014-11-05 13:23:28
啊,是的,谢谢,我没有发现这个问题,现在我明白了。 – Hadron 2014-11-05 14:14:23