一:c++代码内部报错引起可能是涳指针或者其他。
二:需要从c#代码调试进入c++代码可以吧c++的dll和pdb拷入工程项目的debug目录下面。
三:我发现的错误时在C++内部声明啦全局变量这個全局变量会保存上次的状态,所以每次调用c++里面的方法时需要从新初始化
而方法内的局部变量会随着方法的结束而被释放。
1、new出来的字符4102串这样返回回去以後就没办法释放了内存泄1653漏不可避
对于1,你可以通过CoTaskMemAlloc来分配内存这样在C#这里就会被正确释放了。
这个函数和malloc除了函数名不一样其他都┅样声明在windows.h(更进一步应该是在objbase.h)里面,导入在Ole32.lib里面
最近做的项目外壳是用C#写的,核心代码使用C++写的在C#调用C++的DLL的过程中发现了以下的错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏
调用时,可以在DbgViewΦ看到 ResultBuffer的值是正确的但是在C#的代码中发生了尝试读取或写入受保护的内存。这通常指示其他内存已损坏的错误
原来猜想是C#和C++中Char长度不┅样,C#占两个字节C++一个字节的问题,但是把Char转成了wchar_t也还是错
花了两天时间,没能解决问题希望有哪位高手,指导下
你应该庆幸没通过, C/C#共享一片内存是一个很不好的方法.
哦,能请freelaxy解释下C#和C++共享同一片内存会有哪些不好的影响么?
StringBuilder 修改成 IntPtr的确不会出现尝试读取或写入受保护的内存的错误但是我该怎么在C#中从IntPtr获得string型的数据呢?能请lazy_2010说明下么,小弟不太明白
恭喜楼主 哈哈。。 有空还要向你学习呢
谢谢,解决了问题的感觉总是很爽的不过还是不太清楚C#和C++共享内存会出现什么问题。继续关注