我有一个指针数组:pArray[rows][columns],其中每个元素可以包含一个对象的指针。有些对象是在堆上的main()中实例化的,而有些对象也是在堆上也由对象本身的实例化的:也就是说,我将pArray传递给了一个对象成员函数,该函数创建了一个新对象,并指向它在pArray中。

现在,当我想从pArray删除指向对象的指针时,这里有所有权吗?意思是,如果一个对象创建了一个新对象,并在pArray中放置了一个指向它的指针,那么仅创建者对象可以调用该指针上的delete吗?还是可以通过将数组传递给main()和其他对象来实现?

更多细节:

该代码在网格(pArray)上模拟了捕食者的猎物模型。因此,我首先从文件中读取初始网格配置,然后从pArraymain()实例化对象(捕食者和猎物)。但是捕食者和被捕食者可以繁殖,因此对象会生成新对象并通过将pArray传递给它们,从而在pArray上实例化其子对象。

最佳答案

不,在C++中,指针没有“所有权”,如果指针有效(包含对数据/对象的正确引用),则可以在发出delete命令的任何位置将其取消分配。

10-08 19:54