C++ 释放cgo库的内存

C++ 释放cgo库的内存,c++,go,malloc,free,cgo,C++,Go,Malloc,Free,Cgo,我有点乱,我看不出我是怎么摆脱的。。。 我得到了什么: *我使用cgo构建的库(dll)。 *使用这个库(DLL)的C++应用程序。 我该怎么做: 我尝试释放我在C++应用程序中的CGO库中分配的内存。 我应该使用什么工具: 为了构建库(dll),我使用cgo,然后使用VSCMD创建存根库。 我使用visual studio 2017编译应用程序(带有/MD)选项 我能得到什么: 检测到严重错误c0000374 就我所见,这是我释放dll库中分配的数据的结果。 我会注意到,如果我创建一个测试应用

我有点乱,我看不出我是怎么摆脱的。。。 我得到了什么: *我使用cgo构建的库(dll)。 *使用这个库(DLL)的C++应用程序。 我该怎么做: 我尝试释放我在C++应用程序中的CGO库中分配的内存。 我应该使用什么工具: 为了构建库(dll),我使用cgo,然后使用VSCMD创建存根库。 我使用visual studio 2017编译应用程序(带有/MD)选项

我能得到什么: 检测到严重错误c0000374

就我所见,这是我释放dll库中分配的数据的结果。 我会注意到,如果我创建一个测试应用程序并用gcc编译它,这种情况就不会发生


不幸的是,我无法避免使用VS,因为我正在使用一些更喜欢VS的CUDA工具://

经过大量搜索,在使用go、cgo和Visual Studio时,无法创建一个堆。为解决这个问题,我在CGO库中添加了一个免费的CGO内存功能。< /P>你为什么要尝试从C++应用程序中释放内存?你不能释放Go运行时正在管理的内存。如果一片混乱。。。但我实际上是在释放go中分配的c内存,或者更详细地说:我有一个回调函数,它从go接收变量,但由于其中一些是字符串,它们被转换成c字符串,然后移动到c内存(cgo就是这样工作的)。由于回调以及我不想发送副本,因为这将是一种巨大的浪费,因此发生了以下情况:/