NSString 类的内存管理问题

这里写图片描述

/*

 高
   栈:  局部变量
   堆:  动态申请的空间  对象
   BSS: 没有初始化的全局变量和静态变量
   数据区:已经初始化的全局变量和静态变量,字符串常量
   代码区:程序编译后的代码的数据
 低


 */
 - (void)viewDidLoad {
    [super viewDidLoad];
    //0x7fff5fbff7fc
    int a = 10;   // 局部变量
    //0x100000f82
    char *s = "abc"; //字符串,数据区

    NSLog(@"a addr = %p",&a);  //高地址
    NSLog(@"s addr = %p",s);   //低地址

    //0x100001070
    NSString *str1 = @"abc";  //@"abc" 字符串常量 ,在常量区
    NSString *str2 = [NSString stringWithString:@"def"];
    NSString *str3 = [[NSString alloc] initWithString:@"abc"];
    //0x100602420
    //堆区
    NSString *str4 = [NSString stringWithFormat:@"aaa"];
    NSString *str5 = [NSString stringWithFormat:@"aaa"];
    NSString *str5_1 = [NSString stringWithFormat:@"abc"];
    NSString *str6 = [[NSString alloc] initWithFormat:@"bbbb"];
    //常量区
    NSString *str7 = [[NSString alloc] init];
//    [str7 release];
    //堆区
    NSMutableString * str8 = [[NSMutableString alloc] init];
    NSMutableString * str9 = [NSMutableString stringWithString:str4];

    //此时因为str1 是一个常量,默认的引用计数是一个比较大的整数
    NSLog(@"str1 addr = %p,str1.rc = %lu",str1,str1.retainCount);  //小
    NSLog(@"str2 addr = %p,str2.rc = %lu",str2,str2.retainCount);  //小
    NSLog(@"str3 addr = %p,str3.rc = %lu",str3,str3.retainCount);  //小
    NSLog(@"str4 addr = %p,str4.rc = %lu",str4,str4.retainCount);  //小
    NSLog(@"str5 addr = %p,str5.rc = %lu",str5,str5.retainCount);  //小
    NSLog(@"str5_1 addr = %p,str5_1.rc = %lu",str5_1,str5_1.retainCount);  //小
    NSLog(@"str6 addr = %p,str6.rc = %lu",str6,str6.retainCount);  //小
    NSLog(@"str7 addr = %p,str7.rc = %lu",str7,str7.retainCount);  //小
    NSLog(@"str8 addr = %p,str8.rc = %lu",str8,str8.retainCount);  //小
    NSLog(@"str9 addr = %p,str9.rc = %lu",str9,str9.retainCount);  //小
}
2017-11-19 20:01:02.523073+0800 test[5387:467764] a addr = 0x7fff5863bc7c
2017-11-19 20:01:02.523245+0800 test[5387:467764] s addr = 0x1075c1753
2017-11-19 20:01:02.523382+0800 test[5387:467764] str1 addr = 0x1075c30c0,str1.rc = 18446744073709551615
2017-11-19 20:01:02.523472+0800 test[5387:467764] str2 addr = 0x1075c30e0,str2.rc = 18446744073709551615
2017-11-19 20:01:02.523553+0800 test[5387:467764] str3 addr = 0x1075c30c0,str3.rc = 18446744073709551615
2017-11-19 20:01:02.523750+0800 test[5387:467764] str4 addr = 0xa000000006161613,str4.rc = 18446744073709551615
2017-11-19 20:01:02.523853+0800 test[5387:467764] str5 addr = 0xa000000006161613,str5.rc = 18446744073709551615
2017-11-19 20:01:02.523935+0800 test[5387:467764] str5_1 addr = 0xa000000006362613,str5_1.rc = 18446744073709551615
2017-11-19 20:01:02.524038+0800 test[5387:467764] str6 addr = 0xa000000626262624,str6.rc = 18446744073709551615
2017-11-19 20:01:02.524118+0800 test[5387:467764] str7 addr = 0x107bca290,str7.rc = 18446744073709551615
2017-11-19 20:01:02.524205+0800 test[5387:467764] str8 addr = 0x60000024d260,str8.rc = 1
2017-11-19 20:01:02.524300+0800 test[5387:467764] str9 addr = 0x60000024d2c0,str9.rc = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值