2

为什么这个程序:

#include <stdio.h>
#include <Foundation/NSDate.h>
int main() {
    printf("%p\n", [NSDate distantPast]);
    return 0;
}

在 64 位机器上返回错误指针?(在我的情况下为 0xc22d63c8c500000d)

4

1 回答 1

4

它是一个带标签的指针——它们设置了最低有效位,其他位包含类型和值。它们为某些类型提供了紧凑的表示,从而避免了内存分配。有关详细信息,请参阅Mike Ash 的博客文章

于 2013-06-06T09:59:02.620 回答