在 Go + SWIG + C++ 代码中清理内存管理

Dan*_*bos 5 c++ swig go cgo address-sanitizer

我通过 SWIG 使用 Go 的 C++ 库。SWIG 不负责内存管理,因此 Go 端看起来像这样:

f := NewFoo()
defer DeleteFoo(f)
Run Code Online (Sandbox Code Playgroud)

DeleteFoo(f)当我创建 时,调用它很容易f,但对于 C++ 函数的返回值很容易忽略它。

我想自动检查我的代码是否做正确的事情。

我看到 Address Sanitizer 是为 GCC 和 Clang 实现的,这听起来是正确的。但我找不到一个明确的方法来说明如何为我的go test命令启用它。

小智 0

我认为CC="clang -fsanitize=address" go test或者CC="gcc -fsanitize=address" go test应该有效。