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