C#有没有类似C里面的函数malloc()呢?

marlin3018 2012-04-19 12:17:55
请问在C#里面怎么为一组数据分配一块内存空间呢,有没有类似C里面的函数malloc()?
...全文
1353 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
marlin3018 2012-04-19
  • 打赏
  • 举报
回复

这就是为什么叫Managed了, net framework会帮你管理内存。
参考:
Automatic Memor……
[/Quote]
你的意思是我不需要自己去考虑为我定义的一个数组申请一段空间,因为net framework会帮我管理,我只需要定义然后用就可以了?
宝_爸 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 2 楼 的回复:

不用申请,自动分配

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

这就是为什么叫Managed了, net framework会帮你管理内存。
参考:
Automatic Memory Management
http://msdn.microsoft.com/en-us/library/f144e03t.aspx
marlin3018 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

不用申请,自动分配
[/Quote]
你的意思是比如我定义一个字符串数组string[] str=new string[10],系统会自动分配一段存储空间吗?那为什么C里面有用malloc()来申请一段内存空间呢。
宝_爸 2012-04-19
  • 打赏
  • 举报
回复
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
色拉油 2012-04-19
  • 打赏
  • 举报
回复
不用申请,自动分配
csrwgs 2012-04-19
  • 打赏
  • 举报
回复
byte[] d = new byte[10];

不过不用free。由系统自动回收。
你要做的就是使用完成后, d=null;
qldsrx 2012-04-19
  • 打赏
  • 举报
回复
在C++中,数组是先定义大小,然后分配空间,因此定义的时候就知道数组大小了。
而在C#中,数组定义时不指定大小,在初始化的时候给大小,因此定义时不知道大小,也谈不上分配空间。
所以C++中,结构体包含了数组也是固定大小的,但是C#中的结构体包含数组后,大小就动态了,导致无法直接对C#的这类结构体使用指针操作,太糟糕的设定。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧