编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,
language-agnostic heap stack memory-management dynamic-memory-allocation
我正在尝试将地址打印到字符串,但我在第一个NSLog和第二个NSLog中的相同地址获得不同的地址.所以你能告诉我这是怎么回事.它让我很困惑.非常感谢您的努力.
NSString *str1 = [[NSString alloc] init];
NSString *str2 = [[NSString alloc] init];
NSString *str3 = [[NSString alloc] init];
NSLog(@"str1 = %p , str2 = %p, str3 = %p",&str1,&str2,&str3);
NSLog(@"str1 = %p , str2 = %p, str3 = %p",str1,str2,str3);
Run Code Online (Sandbox Code Playgroud)
产量
str1 = 0x7fff565b9c88 , str2 = 0x7fff565b9c80, str3 = 0x7fff565b9c78
str1 = 0x10c0a7060 , str2 = 0x10c0a7060, str3 = 0x10c0a7060
Run Code Online (Sandbox Code Playgroud)
我不明白为什么str1,str2并且str3都指向相同的内存位置.