黑马程序员技术交流社区

标题: OC-NSSstring内存管理小结 [打印本页]

作者: zhuhoulin    时间: 2015-7-19 22:08
标题: OC-NSSstring内存管理小结
NSString等Foundation框架提供的类的内存管理
    (1)字符串的常量池(在数据区)
    (2)
        NSString *str1 = @“abc”;
        NSString *str2 = [NSString stringWithString:@"abc"];
        NSString *str3 = [[NSString alloc] initWithString:@"abc"];
        以上3个的空间在栈区,并且str1,str2,str3指向的是同一个地址,也就是说abc在数据区只存储了1份。如果你需要的字符串在常量池中已经存在了,
        不会分配新的内存空间。符合此规则的有以下几种:

        NSString *str4 = [NSString stringWithformat:@"abc"];
        NSString *str5 = [[NSString alloc] initWithFormat:@"abc"];
        以上两种情况,字符串是存储在堆区的,并且两个的内存地址并不相同,也就是说同一段字符串在堆区中存储了两份。
     
        注:对于alloc关键字而言,他本身的意思是分配内存空间,如果没有的话,系统会自动分配空间,并且系统也会自动进行release,不需要程序猿
            自己释放。而alloc需要程序猿手动释放。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2