日期:2014-05-18  浏览次数:21183 次

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

------解决方案--------------------
byte[] d = new byte[10];

不过不用free。由系统自动回收。
你要做的就是使用完成后, d=null;
------解决方案--------------------
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
------解决方案--------------------
探讨

引用:

不用申请,自动分配

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

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