问个关于内存管理的问题

我今天也在研习CCAutoReleasePool.

发现只有CCDirector::init调用了CCPoolManager::sharedPoolManager()->push();
而多处调用了CCPoolManager::sharedPoolManager()->pop();
尤其是在mainloop中有调用.

我的问题是, CCDirector是个单例, 也就是说只会存在一次CCPoolManger的push, 那么CCPoolManager的m_pReleasePoolStack 也会始终最多只有一个元素, 一个CCAutoReleasePool.

为什么CCPoolManager的pop却认为会存在多个CCAutoReleasePool的情况?

这是为CCPoolManager手动push了做准备么? 如果是这样, 为什么要使用多个CCAutoReleasePool呢?

是不是大部分情况下, 仍然只有一个CCAutoReleasePool?

谢谢!!

好吧, 似乎是大部分情况下都是一个ccautoreleasepool.
但是在CCDirector::init(void)中.
// create autorelease pool
CCPoolManager::sharedPoolManager()->push();

之前其实已经有了一个ccautoreleasepool的. 因为前面的代码有初始化ccpoolmanager.

我现在就不理解了.
在push之前初始化的那个pool, 在随后的pop中被销毁.

并且总是只保件有一个pool, 那么为什么要设计成多个pool的情况?? 只设计一个pool岂不是更好???