在较早的一篇博文中,我报告说 Java 中的一个小字节数组(例如,一个包含 4 个字节的数组)的内存使用量约为 24 个字节。换句话说:分配小块内存有很大的开销。
C++ 中会发生什么?
为了找出答案,我可以尝试分配一百万个 4 字节数组并查看进程的总内存使用量。当然,进程的内存使用会包含一些与4字节数组无关的开销,但我们预计这样的开销会比较小。
从我的基准测试中,我得到以下结果……
系统 | 内存使用量(以字节为单位) |
---|---|
海湾合作委员会 8,Linux x86 | 32字节 |
LLVM 14,苹果 aarch64 | 16字节 |
结果将根据您的系统配置而有所不同。
教训是分配四个字节( new char[4]或malloc(4) )不会使用四个字节的内存……它通常会使用更多。
原文: https://lemire.me/blog/2022/12/12/what-is-the-memory-usage-of-a-small-array-in-c/