为了账号安全,请及时绑定邮箱和手机立即绑定

字符串数据在内存中的位置

字符串数据在内存中的位置

Go
慕婉清6462132 2022-06-01 16:13:07
我读到字符串是不可变的,内部字符串有两个数据,第一个是指针,第二个是指向数据的长度。s := "Hello World"这意味着 s 有两个字节的字符串数据指针,长度为 11,如果我们更改此数据s = "This is golang"那么s将包含不同的指针和长度,但如果 s 指向的字符串的这些字节存储在堆栈或堆中,我没有得到?此外,我们可以从文件中获取字符串并将其分配给s变量,这意味着在编译时编译器不知道要存储的字节数,所以会堆入吗?
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

字符串文字存储在数据段中。他们无法改变。

在运行时动态创建的字符串存储在堆栈或堆中,具体取决于字符串的分配/使用方式。如果一个字符串在一个函数中使用并且不存在于该函数之外,它很可能会在堆栈上。否则它将在堆中。


查看完整回答
反对 回复 2022-06-01
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

String创建后为 const 。如果你重新分配一个String var,编译器只是创建另一个const String,放弃前一个,前一个将等待GC。



查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号