请问在C#里面怎么为一组数据分配一块内存空间呢,有没有类似C里面的函数malloc()?

解决方案 »

  1.   

    byte[] d = new byte[10];不过不用free。由系统自动回收。
    你要做的就是使用完成后, d=null;
      

  2.   

    Marshal.AllocHGlobal Method (Int32)Allocates memory from the unmanaged memory of the process by using the specified number of bytes.参考:
    http://msdn.microsoft.com/en-us/library/s69bkh17.aspx
      

  3.   

    你的意思是比如我定义一个字符串数组string[] str=new string[10],系统会自动分配一段存储空间吗?那为什么C里面有用malloc()来申请一段内存空间呢。
      

  4.   


    这就是为什么叫Managed了, net framework会帮你管理内存。
    参考:
    Automatic Memory Management
    http://msdn.microsoft.com/en-us/library/f144e03t.aspx
      

  5.   


    这就是为什么叫Managed了, net framework会帮你管理内存。
    参考:
    Automatic Memor……
    [/Quote]
    你的意思是我不需要自己去考虑为我定义的一个数组申请一段空间,因为net framework会帮我管理,我只需要定义然后用就可以了?
      

  6.   

    在C++中,数组是先定义大小,然后分配空间,因此定义的时候就知道数组大小了。
    而在C#中,数组定义时不指定大小,在初始化的时候给大小,因此定义时不知道大小,也谈不上分配空间。
    所以C++中,结构体包含了数组也是固定大小的,但是C#中的结构体包含数组后,大小就动态了,导致无法直接对C#的这类结构体使用指针操作,太糟糕的设定。