下面的代码使用 1 个字节的内存。
byte[] n = new byte[] { 10, 20, 30, 40 }; //memory looks like this 10 | 20 | 30 | 40
与下面的这段代码相比,它使用 4 个字节的内存。
byte n1 = 10; // memory looks like this | 10 | 0 | 0 | 0 | 20 | 0 | 0 | 0 | 30 | 0 | 0.....
byte n2 = 20;
byte n3 = 30;
byte n4 = 40;
这是在 Visual Studio 2012 + 2010 中测试的,我认为现代编译器应该为我做优化?如果放置间距确实更快,以便字节秘密地变成非功能 int,那么它为什么对数组不做同样的事情,如果字节数组每个值占用 4 个字节从而渲染整个字节数组,它会变得更快字节的目的在 32 位/64 位机器上完全没用?总结一下:为什么编译器会以这两种不同的方式分配内存,哪一种是低效的方式?第 2 部分 32 位 / 64 位机器上的字节的实际目的是什么,如果将它存储在实际的连续字节块中效率很低,因为当您单独声明字节时 VS 拒绝这样做。