A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

NSString * str=@"hello";因为NSString类型是不可变字符串,那么它的存储位置应该是常量区域。但是str又是对象类型,那么它的存储区域应该在堆里啊,堆好像和常量区不是一个概念,所以困惑,NSString类型的对象到底存放在内存的什么区域内。

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

2 个回复

倒序浏览
str只是一个指针而已,是一个NSString类型的指针!他可以指向@"hello"
回复 使用道具 举报
脸皮猴 发表于 2014-5-7 09:54
str只是一个指针而已,是一个NSString类型的指针!他可以指向@"hello"

但是你知道它存储的@hello这一块不是不可变的嘛,怎么都不能修改里面的内容,然后不可变内容不是在常量区嘛!但是对象是在堆里啊,堆和常量区是两个概念的,那它的在内存中的正确存储位置?
str是个指针它是存放在栈中的,它所存在的代码块结束了,它就释放了,我懂哦:#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马