C#报错如下:尝试读取或写入受保护的内存,这通常指示其他内存已损坏
C#中DLL调用定义如下:
C++中函数定义:
返回的char*数组:
这个问题困扰我好几天了。还没解决
它时而报错时而不报错
建议加个日志把C++代码中返回的句柄prt记录下来,同时把C#里Dll.Init()返回的句柄也用日志记录下来,然后报错的时候看一下这个返回的句柄指向的地方是不是指向了系统内存的不可访问的地址,例如是系统内核地址等等,确认了这个问题之后再去根据代码排查,是C++代码返回的句柄错了,还是由于C#的GC机制导致这个句柄变化了。