I'm not truly a CS guy, so if any of you geniuses on here can point me in the right direction I'll be eternally grateful.
I have a c-code command line function that used to write its results to file. I converted it to return it's data via a float* array to a C++ program like such (to avoid constant file I/O):
float * mgrib(int argc, char **argv)
This worked perfectly. I now need to get this into a C# program, and here's where things go haywire.
The first thing I did to avoid the char ** was to make the arguments a series of bool. That worked fine if I allow it to still dump to file.
The problem is juggling the c-style float array in C#. Within the c-code it was allocated with malloc.
So here's everything I've tried with no success(I know the size of the array):
Make a "free" function to export to call from C# to release the memory when I'm done with it. After a few loops the C# crashes with no warning.
Release the malloc from C# with Marshal.FreeCoTaskMem. Same result.
Move the float* to an argument and remove the c-code malloc. (void mgrib(..., float* data,...)
__a)Allocate it with Marshal.AllocCoTaskMem. Free it with Marshal.FreeCoTaskMem.
__b)Use Marshal.Copy to allocate. Free it with Marshal.FreeCoTaskMem (Maybe this is wrong?)
I've dabbled in just about everything I could find in the internet. Please let me know if more info is necessary. I'm hoping this just a simple concept that I'm missing.