C#引用C++ DLL經常出現內存損毀的問題,為了解決這個問題,記下兩種方式:
1.c++中的 char** 對應StringBuilder 可以字符串傳輸,C#中用string對接Stringbuilder,從而實現傳輸和修改。
這里對于初次使用,注意StringBuilder 申請足夠的長度使用,否則會出現內存損壞的現象。
StringBuilder str_sb = new StringBuilder(10000);
2.另外一種方式就是用IntPtr(對應C++中的char *類型)的句柄類型來轉換,這種方式可以避免申請內存不足而損毀的現象。
這種方式轉換string
string str = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(ptr);
記錄下今天遇到的問題。
新聞熱點
疑難解答
圖片精選