内存管理问题。。。怎么正确释放

说明下遇到的问题 一般情况下下 create创造出来的node在create函数里面就添加了autorelease了
这样 当node离开作用域的时候 node会被回收池喀嚓掉

可是如果我再头文件声明了一个node;
for(int i = 0;i < 10;i ++)
{
ccnode n = node::create();
node
= n;
}

这样子我离开了for所处的函数时,node]里面的数据还在

现在我需要清楚掉node里面的数据
如果只是 node* = null:
node*是没有被回收的 还存在于内存中

添加node* -> autorelease 报错

如果有添加 this -> addchild(node*);
然后node*->removefromParent;
这样,node也会被回收,但是我并不需要这一步,这样 我就不会回收node

各位有没有什么好的解决方法 谢谢
还是喜欢oc的数组 ccarry有考虑过替换掉node]
但是如果是二维数组 node]]有明确地坐标关系
有时候会比较方便 所以就需要解决这个问题

说得比较不清楚 希望各位谅解下


说明下遇到的问题 一般情况下下 create创造出来的node在create函数里面就添加了autorelease了
这样 当node离开作用域的时候 node会被回收池喀嚓掉

可是如果我再头文件声明了一个node;
for(int i = 0;i < 10;i ++)
{
ccnode *n = node::create();
node = n;
}

这样子我离开了for所处的函数时,node]里面的数据还在

(node里的数据已经是野指针了)

node = n->retain();

在析构函数里做循环 release就行了

你说得有道理 retain了我自己再手动release这样才合理 不过我不是要再折构里面才释放掉node的指针 我是想在程序运行的过程中替换掉node 当我替换掉了 就要删掉原本数据 如果我retain了然后再需要替换的地方release 这样子 是不是离开了作用域 指针就会被回收?**

create创造出来的node在create函数里面就添加了autorelease了
这样 当node离开作用域的时候 node会被回收池喀嚓掉

不是离开作用域的时候回收,是在这一帧结束的时候,autoreleasepool会检查这一帧所有调用autorelease的对象,如果引用计数为0了就回收掉。

这样子我离开了for所处的函数时,node]里面的数据还在

确实离开for循环的时候node还在。但是,就像上面说的那样,如果这一帧没有在其他地方提高引用计数,那么这一帧结束了之后就被回收掉了。

如果我retain了然后再需要替换的地方release 这样子 是不是离开了作用域 指针就会被回收?

如果retain了,那引用计数会+1,那么不会自动释放了,要手动管理释放。具体就是release的时候,如果引用计数已经为0了,那么就直接回收。不是在离开作用域的时候回收。