NSString的內存實現

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需要程手動釋放。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章