再问一下,如何手动在C#中动态分配释放内存,而不是通过GC释放,就像C++中的delete。高手们,求求我吧!!!

解决方案 »

  1.   

    C#中一般不需要手工释放内存
    某些释放方法实际并没有释放内存,只是提前把 object放入GC队列中,真正什么时候释放内存还是无法把握。推荐不要用什么Dispose()之类的东西。除非你很有必要而且你很精通...
      

  2.   

    使用以下函数可以实现这个功能:static void GetMemory(ref int nBytes, ref IntPtr  memory, ref int ifail)
    {
      memory =  Marshal.AllocHGlobal(nBytes);
      ifail = (! memory.Equals(IntPtr.Zero) ) ? 0 : 1;
    }
    该内存必须用 Marshal.FreeHGlobal(memory) 来释放
      

  3.   

    int * 很简单,传int的引用就行了,
    形如:void GetMemory(ref int nBytes, char * * memory, ref int ifail)char**现在还不知道,我在文档中找找。文档中讲的比较详细的。
    在msdn中看看下面的地址:
    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconmarshalingdatawithplatforminvoke.htm
    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconconsumingunmanageddllfunctions.htm
      

  4.   

    char* 可以用string,也可以用StringBuilder。char** 一样的。
      

  5.   

    http://www.codeproject.com/csharp/win32.asp
    这个是老外整理出来的API集合