【发布时间】:2019-08-09 05:21:35
【问题描述】:
目的:我有一个大缓冲区,我希望有一个指针数组/切片指向缓冲区中的不同位置。
我在做什么:
datPtrs := make([][]byte, n)
for i:=0; i<n; i++{
datPtrs[i] = bigBuf[i*m:(i+1)*m]
}
我的问题:
- 这会复制内存吗?我的猜测不是,但我找不到任何地方来证实这一点。
- 找出是否存在内存副本的最佳方法/工具是什么?
【问题讨论】:
-
第二个问题的答案不完整:如果您有some test code,,您可以通过将新信息写入其中一个值来凭经验验证此类事情;如果它影响了另一个,那么你有一个新的引用而不是原始内存的副本。
-
您在哪里寻找有关此主题的信息?我确信这个确切的主题记录得很好。你至少应该阅读介绍和有效的 go 文档,两者都可以在 golang.org 获得。
-
第二个问题的技术答案:一切都是复制品,你只需要知道你在复制的什么。在切片、映射、指针和接口的情况下,它是一个被复制的指针。
-
谢谢大家,信息真的很有帮助!
标签: go