zoukankan      html  css  js  c++  java
  • C# 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。

    在C#中调用别人的DLL的时候有时候出现 尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。

    在传值的时候还是用指针,再在C#中做转换就好了。

    解决办法:

     

    [DllImport("APPLISTCC.dll")]
    public static extern string TestFunc1(string param1);

    string ret1 = TestFunc1("text");

     

    改成:

     

    [DllImport("APPLISTCC.dll")]
    public static extern IntPtr TestFunc1(IntPtr par1);

    IntPtr ptrIn = Marshal.StringToHGlobalAnsi("text");
    IntPtr ptrRet = TestFunc1(ptrIn);
    string retlust = Marshal.PtrToStringAnsi(ptrRet);

    自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉

  • 相关阅读:
    Jzoj5542 董先生的钦点
    Jzoj5542 董先生的钦点
    (各种)FFT模板
    (各种)FFT模板
    Jzoj3528 图书馆
    Jzoj3528 图书馆
    Jzoj5317 Func
    Jzoj5317 Func
    Jzoj3591 数据
    【UVa11021】Tribles
  • 原文地址:https://www.cnblogs.com/jordan2009/p/3695869.html
Copyright © 2011-2022 走看看