CCPhysicsWorld.cpp 394行是bugs还是我c++经验不够啊?关于生命周期

3.0RC代码,关于物理引擎的一段代码:

CCPhysicsWorld.cpp 394行

Vector<PhysicsShape*> PhysicsWorld::getShapes(const Point& point) const
{
Vector<PhysicsShape*> arr;
cpSpaceNearestPointQuery(this->_info->getSpace(),
PhysicsHelper::point2cpv(point),
0,
CP_ALL_LAYERS,
CP_NO_GROUP,
(cpSpaceNearestPointQueryFunc)PhysicsWorldCallback::getShapesAtPointFunc,
&arr);

return arr;

}

arr 是申请的栈内存,在该函数执行后即释放,这样写代码可以?请大侠指教!!

arr是临时变量,返回之后是会被释放,但是返回的时候会生成一个临时的拷贝,如果有
Vector<PhysicsShape*> a;
a = PhysicsWorld::getShapes(const Point& point) const;
会调用赋值函数将拷贝赋值给a。有的编译器做了优化,不会有拷贝构造函数调用,而是直接赋值。