需要实现以下功能
1.分配固定大小的内存
2.获得分配的内存的地址
如:
Char[] buf = new Char[10000];Int address = ...(buf的地址)
请问怎么样实现? 谢谢

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/zcbcf4ta(v=vs.80).aspx
      

  2.   

    IntPtr ptr = Marshal.AllocHGlobal(32 * 1024);
    int address = (int)ptr;我这样写不知道对不对??
      

  3.   

    fixed(char* p = &buf[0])
    {
        //p就是buf的地址
    }
      

  4.   

    可以这样写,有个小问题,64位机器上ptr要转成long(其实根本不用转),Marshal.AllocHGlobal分配到的是非托管内存,一定要用Marshal.FreeHGlobal(ptr)释放。
      

  5.   


      Char[] buf = new Char[10000];
      unsafe 
      {
         int* p = &buf[0];
      }
            
    二楼办法也可以,只是两者有本质区别,Marshal.AllocHGlobal是调用GlobalAlloc 从进程的非托管内存中分配内存。必须由Marshal.FreeHGlobal 即API函数:LocalFree 来释放!
      

  6.   

     unsafe 
      {
         int* p = &buf[0];
      }
      

  7.   

    记得开启 /unsafe 编译
    http://msdn.microsoft.com/zh-cn/library/ct597kb0%28v=VS.80%29.aspx