我为 NSString 做了一个测试。
int a = 10;
NSString *str1 = @"str";
NSString *str2 = [NSString stringWithFormat:@"str"];
NSString *str3 = @"str";
NSString *str4 = @"str2";
NSLog(@"%p %p | 3 %p | 4 %p | a %p", str1,str2,str3,str4,&a);
Run Code Online (Sandbox Code Playgroud)
结果是
0x1286287c8 0xa000000007274733 | 3 0x1286287c8 | 4 0x1286287e8 | a 0x7ffeeb215b14
Run Code Online (Sandbox Code Playgroud)
此测试放置在 iPhone 6s(11.1) 模拟器中。那么str1内存中的位置是什么?它是堆栈还是堆?