memory-management - Golang 中 []byte 和 string 转换的技术问题

标签 memory-management go type-conversion

string 转换为 []byte 是否分配了新内存?此外,从 []byte 转换为 string 是否会分配新内存?

 s := "a very long string"
 b := []byte(s) // does this doubled the memory requirement?

 b := []byte{1,2,3,4,5, ...very long bytes..}
 s := string(b) // does this doubled the memory requirement?

最佳答案

在这两种情况下都是。

String types是不可变的。因此将它们转换为可变的 slice type将分配一个新的 slice 。另见 http://blog.golang.org/go-slices-usage-and-internals

反之亦然。否则改变 slice 会改变字符串,这将与规范相矛盾。

关于memory-management - Golang 中 []byte 和 string 转换的技术问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293131/

相关文章:

C - 结构的内存分配

每次测试后的golang测试方法 : undefined: testing. M

arrays - 在一个 slice 中解码 2 个不同的结构

go - 在 Go 中提取子字符串

java - Java 8 中的新类型转换还是我犯了一个错误?

java - 用另一个最终静态变量初始化最终静态变量的内存消耗

c - 打印字符数组时遇到问题?

c - 如何在 Mac OS X 上通过 C API 获取当前线程的堆栈大小? (不含 cocoa 或碳)

arrays - SQL Server - 将一列逗号分隔的字符串转换为 JSON 数组到一个新列中

python-3.x - 将 .TIF 转换为 .PDF 得到 PIL : Error reading image