【发布时间】:2015-01-14 17:25:37
【问题描述】:
malloc 在堆上说 4 个字节是否有意义,因为 malloc 在内部通常会将其四舍五入到 32 位系统上的 8 字节边界和 64 字节系统上的 16 字节边界以供其内部使用。
我需要分配一个字符串来存储一位数或两位数。因此,我最多需要 3 个字节(两位数为 2,'\0' 字符为 1 来终止我的字符串)。想知道执行 malloc 3 是否有任何好处,我是否应该改为执行 malloc 8?
有什么想法吗?
【问题讨论】:
-
使用
std::string,不用担心为字符串分配和释放内存。 -
内存真的是个问题还是你只是想优化?
-
分配你需要的任何内存。如果你需要 3 个字节而你要求 8 个字节,你会如何处理额外的 5 个字节?如果您对这 5 个字节有合法用途,请定义一个 8 字节结构并使用它。
-
您是否分配额外的字节并且不使用它们或者堆分配器确实绝对没有区别。除了有一天必须维护您的代码的不幸受害者。
-
@iharob:可能......因为它对任何一个都同样有效。虽然这可能是巧合。