内存地址不同,不确定它的含义

时间:2013-03-08 03:12:32

标签: objective-c

假设我们正在使用Objective-C

    NSDate *now = [NSDate date];
    NSLog(@"The new date lives at %p", now);
    NSLog(@"The new date lives also at %p", &now);

NSLogs将吐出不同的内存地址,这让我感到困惑。其中一个NSLog现在告诉我对象的地址,但是哪个?一个给出指针的地址,另一个给出对象的地址?

谢谢

2 个答案:

答案 0 :(得分:2)

你是对的。第一条日志消息显示NSDate对象本身的地址,该地址应位于某处的动态内存中("在堆上#34;)。第二行是指针变量' now'的地址,在这种情况下是一个局部变量,应该在堆栈上。

因此,堆栈上有一个名为now的局部变量。 now是一个指针,该now变量的值是NSDate的内存地址。

答案 1 :(得分:0)

它是指针和指针指针之间的区别。