Search code examples
c++gomallocfreecgo

Freeing memory of a cgo library


I'm in a bit of a mess, and I cannot see how I'm getting out of it... What do I got: * A library (dll) I built using cgo. * A c++ app using this library (dll).

What do I do: I try to free memory I have allocated in the cgo library in the c++ app.

What Tools do I use: To build the library (dll) I use cgo, then creating a stub lib using the VS cmd. I use visual studio 2017 to compile the app (with /MD) option.

What do I get: Critical error detected c0000374

As far as I can see, this is a result of me freeing data which was allocated in the dll libarary. I will note that this does not happen if I create a test app and compile it with gcc.

Unfortunately, I can not avoid using VS as I am working with some CUDA stuff which like VS better :/


Solution

  • After much searching, there is no way to create one heap when using go,cgo and Visual Studio. To solve this I add a free function which free the cgo memory in the cgo library.