分配 C 内存来保存 Go 结构是否是 cgo 支持的用例?

问题描述 投票:0回答:1

我一直在探索不将嵌套 go 指针传递到 C 中的策略。下面是我如何尝试分配 C 内存块以保存 Go 结构的示例:

(*MyGoStruvt)(C.calloc(1, unsafe.Sizeof(MyGoStruvt{})))

有谁知道这是否是受支持的用例?如果不是,有人可以解释一下这种方法有多么错误吗?

go cgo
1个回答
0
投票

规则很简单:如果您使用 malloc、calloc 等分配内存,则您接受 C 内存管理策略。 Golang 运行时不知道有关您的分配的任何信息。所以你必须明确并在某些事情上免费打电话。否则就是内存泄漏。

© www.soinside.com 2019 - 2024. All rights reserved.