我不明白为什么我们需要外部自动释放池(UIApplicationMain
左右和NSApplicationMain
内)。当进程终止时,不会释放所有已分配的内存吗?
例如,如果我这样做会怎么样:
@import Foundation;
int main(int argc, const char *argv[]) {
for (NSUInteger i = 0; i < NSUIntegerMax; i++) {
NSArray *anArray = [NSArray array];
}
return EXIT_SUCCESS;
}
答案 0 :(得分:3)
这是一个框架不变量。该框架取决于是否存在自动释放池。如果没有自动释放池,您的程序将向日志发送垃圾邮件。该程序仍然可能会运行,内存仍将在退出时释放,但框架仍然希望有一个池可以调用它。
答案 1 :(得分:-1)
你是对的,当进程退出时,所有内存都会被释放。但是自动释放池的意义在于之前释放内存。 (在你的例子中,你是“放弃”内存 - 分配然后忘记分配。)否则,你只是泄漏内存,直到系统不能再为进程分配,在这种情况下进程被杀死