其实我的问题和这个one很相似,但这篇文章仅关注 C#。最近我读到一篇文章说,即使某些位没有被使用,java也会将一些短类型(例如short)在内存中“提升”到4字节,因此它无法减少使用量。 (这是真的吗?)
所以我的问题是语言,尤其是C、C++和java(正如Manish在post谈论java中所说的那样),如何处理小数据类型的内存分配 。首选引用或任何方法来找出它。谢谢
最佳答案
C/C++ 仅使用指定的内存量,但将数据(默认情况下)对齐到某个值的倍数的地址,通常对于 32 位应用程序为 4 字节,对于 64 位应用程序为 8 字节。
例如,如果数据在 4 或 8 字节边界上对齐,则“char”仅使用一个字节。 5 个字符的数组将使用 5 个字节。但是在 5 字节字符数组之后分配的数据项被放置在跳过 3 个字节的地址以保持其正确对齐。
这是为了大多数处理器上的性能。通常有诸如“pack”和“align”之类的编译指示可用于更改对齐方式或禁用对齐方式。
关于java - 使用小数据类型是否会减少内存使用(来自内存分配而不是效率)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24451609/