加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么每个人都使用2 ^ n个数字进行分配? – > new St

发布时间:2020-12-15 06:26:01 所属栏目:百科 来源:网络整理
导读:15年前,在用Pascal进行编程的时候,我明白为什么要用二进制的内存分配功能.但这似乎仍然是最先进的. C#示例: new StringBuilder(256);new byte[1024];int bufferSize = 1 12; 我仍然看到这几千次,我自己使用,我还在质疑: 我们需要现代编程语言和现代硬件吗
15年前,在用Pascal进行编程的时候,我明白为什么要用二进制的内存分配功能.但这似乎仍然是最先进的.

C#示例:

new StringBuilder(256);
new byte[1024];
int bufferSize = 1 << 12;

我仍然看到这几千次,我自己使用,我还在质疑:

我们需要现代编程语言和现代硬件吗?
我猜这是很好的做法,但是呢是什么原因呢?

编辑
例如,一个byte []数组,如这里的答案所示,2的幂是没有意义的:数组本身将使用16个字节(?),所以使用240(= 256-16)大小适合256字节?

解决方法

Do we need this in modern programming languages and modern hardware? I guess its good practice,but what’s the reason?

这取决于.这里有两件事要考虑:

>对于小于内存页面大小的大小,二分之二和任意数字之间没有明显的差异来分配空间;
>你主要使用带有C#的托管数据结构,所以你甚至不知道在下面真正分配了多少个字节.

假设您正在使用malloc()进行低级别分配,则使用页面大小的倍数将被认为是一个好主意,即4096或8192;这是因为它允许更有效的内存管理.

我的建议是分配你需要的东西,让C#为你处理内存管理和分配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读