为什么这个程序:
#include <stdio.h>
#include <Foundation/NSDate.h>
int main() {
printf("%p\n", [NSDate distantPast]);
return 0;
}
在 64 位机器上返回错误指针?(在我的情况下为 0xc22d63c8c500000d)
为什么这个程序:
#include <stdio.h>
#include <Foundation/NSDate.h>
int main() {
printf("%p\n", [NSDate distantPast]);
return 0;
}
在 64 位机器上返回错误指针?(在我的情况下为 0xc22d63c8c500000d)
它是一个带标签的指针——它们设置了最低有效位,其他位包含类型和值。它们为某些类型提供了紧凑的表示,从而避免了内存分配。有关详细信息,请参阅Mike Ash 的博客文章