当前位置:  开发笔记 > 编程语言 > 正文

.net中最小的内存分配是一个字节是真的吗?

如何解决《.net中最小的内存分配是一个字节是真的吗?》经验,为你挑选了2个好方法。

我可以在托管代码中分配的最小内存量是一个字节吗?

我是否正确理解布尔变量占用的内存远多于一点?

有没有办法让我在.net中以小于一个字节的块分配内存?



1> Liedman..:

这是正确的,分配是在字节的粒度上进行的(可能四舍五入到偶数个字节甚至更高).对于我使用过的任何操作系统都是如此,因此它并不特定于托管代码.内存管理器使用字节而不是位.

另一方面,如果你有很多布尔值并想要获得更高的存储效率,那么将布尔值打包成一个阵列就不难了(参见BitArray).



2> Binary Worri..:

你不能在任何计算机上分配内存 - 我知道 - 数量小于一个字节,绝对不在PC上.

另外,使用.net 没有分配任何内存,除非你在.Net中使用C++,否则你都会为你照顾(带垃圾收集你可能更好地说你"使用"内存而不是"分配"内存,实际上不可能判断对new的调用是否会分配内存或重用内存).

如果您使用的是C++,即使您可能要求一个字节,操作系统也会为您的程序分配一块内存,这几乎不会超过一个字节.

如果你想存储一个位数组,你可以滚动你自己的BitArray集合,你将存储的最小值是一个字节(实际上你应该使用整数),然后打包和解包这些位.

幸运的是.Net 3.5附带了一个BitArray类(显然是1.0,1.1,2.0,3.0 ...... 感谢Joe)

但是,总是有成本.打包和解包位比保​​持一组布尔值要慢.

希望这可以帮助

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有