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#为你处理内存管理和分配.