我是初学者,想请教各位大神win下sprite内存释放问题

sprite申请后,在执行addChild操作后,然后这个sprite被释放掉了,不过这个精灵还是在屏幕中进行动作,同时还占用内存,首先向文,这个时候剩下的只有texture吗?还是这个sprite整体都存在,怎样把这部分内容去掉呢?并且由于在相同层还要进行大量的新sprite创建,剩下的东西会影响程序执行速度…
我是新人,所以问题描述的不好,请大家多多见谅

为什么执行了addChild之后会被释放掉呢,addChild是最能保证精灵不被释放了

你要先把它从场景中Remove掉,这样你就在场景里面看不到它了。但是只这样的话texture是还在的,如果确保之后都不会再用到这个texture,可以把它从内存里面释放掉:7::7:

请问我具体应该用那些代码,如何操作呢,还请大神多指教

void Node::addChildHelper(Node* child, int localZOrder, int tag, const std::string &name, bool setTag)
{
if (_children.empty())
{
this->childrenAlloc();
}

this->insertChild(child, localZOrder);

if (setTag)
    child->setTag(tag);
else
    child->setName(name);

child->setParent(this);
child->setOrderOfArrival(s_globalOrderOfArrival++);

#if CC_USE_PHYSICS
// Recursive add children with which have physics body.
Scene* scene = this->getScene();
if (scene != nullptr && scene->getPhysicsWorld() != nullptr)
{
child->updatePhysicsBodyTransform(scene);
scene->addChildToPhysicsWorld(child);
}
#endif

if( _running )
{
    child->onEnter();
    // prevent onEnterTransitionDidFinish to be called twice when a node is added in onEnter
    if (_isTransitionFinished) {
        child->onEnterTransitionDidFinish();
    }
}

if (_cascadeColorEnabled)
{
    updateCascadeColor();
}

if (_cascadeOpacityEnabled)
{
    updateCascadeOpacity();
}

}

addChild()的实现由addChildHelper()做实际操作,你可以一步一步跟踪进去,根本没有进行内存释放,如果你调用CREATE()静态函数创建的,应该是由内存池去管理,你没法知道他什么时候被销毁····如果你是自己NEW的··原则上你应该自己DELETE它·····

这些都是很基本的东西,建议楼主先去看一些基础教程吧。代码this->removeChild();纹理的话,你还是看下这个吧http://www.cnblogs.com/sevenyuan/archive/2013/07/11/3183299.html

非常感谢啊!

多谢你辛苦的给我看代码,多谢了

应该的相互学习