将重新分配指针导致内存泄漏?

tom*_*tom 2 memory-leaks memory-management autorelease ios

我有以下代码,并想知道当iOS重新收集分配的内存时会发生什么.内存p1是否会指向后来自动释放,虽然它现在指向不同的内存?并且内存p2也指向自动释放,因为p1在语义上意味着在开始时指向自动释放的内存?

NSMutableArray *p1 = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *p2 = [[NSMutableArray alloc] init];

// what will happen to the memory p1 and p2 point to
// after the following assignment, and at later stage?
p1 = p2;
Run Code Online (Sandbox Code Playgroud)

X S*_*ash 5

什么都不会泄露,p1是一个自动释放的对象,在这种情况下,在将p2分配给p1之后,它们都只是指向同一个对象.p1指向的原始对象由自动释放池管理,并在池耗尽时释放.ARC与否,假设您稍后释放p2,则没有泄漏.