我一直在探索不将嵌套 go 指针传递到 C 中的策略。下面是我如何尝试分配 C 内存块以保存 Go 结构的示例:
(*MyGoStruvt)(C.calloc(1, unsafe.Sizeof(MyGoStruvt{})))
有谁知道这是否是受支持的用例?如果不是,有人可以解释一下这种方法有多么错误吗?
规则很简单:如果您使用 malloc、calloc 等分配内存,则您接受 C 内存管理策略。 Golang 运行时不知道有关您的分配的任何信息。所以你必须明确并在某些事情上免费打电话。否则就是内存泄漏。