知识卡片

子串可能保留底层

专业/工作 · 470.b.1.a.1.c.3.a.6.a.2.d.1.a.1.a.1

内容

字符串切片得到子串时,内部可能仍指向原字节数组,导致大字符串被意外保留。发散:小片段引用大底层,是内存泄漏里很隐蔽的一类。

参考来源

- 位置:《Go语言入门到实战(共3册)》第30章《Go语言学习笔记:第5章 数据》(源文件:_epub-src/text/part0064.html) - 结论依据:原文围绕“内部依旧指向原字节数组”给出定义、机制、流程、对比或限制条件,本卡片据此提炼可迁移的语言/工程结论,并补充了边界或实践启发。 - 原始内容:错误: cannot take the address of s[1] } 以切片语法(起始和结束索引号)返回子串时,其内部依旧指向原字节数组。 import ( "fmt" "reflect" "unsafe" ) func main() { s := "abcdefg" s1 := s[:3]……