【发布时间】:2015-11-20 15:29:44
【问题描述】:
我想我理解堆栈对齐是 4 字节,例如如果我只添加一个字符,他的地址将在 4 字节的右侧(如果还有其他 1 或 2 字节变量,则稍早)
我仍然无法理解堆中的对齐方式,我认为有 4 字节或 8 字节对齐,但事情是这样的,当我分配 100 和 20 字节时,第一个结尾之间有 4 个字节和第二个的开头,所以我猜堆会使用 8bytes 对齐。
通过连续分配 1 4 7 8 9 14 16 17 个字节,我注意到 1、4、7、8、9 每个占用 16 个字节,而 14 16 17 占用 24 个字节,为什么会这样?
我正在使用 C/C++ 并使用 malloc 进行分配(与 new 相同)。
谢谢。
【问题讨论】:
-
可能取决于你如何分配这些东西,你没有展示出来。
-
对不起,我使用 C/C++,我用 malloc 分配它们。
标签: assembly malloc alignment heap-memory memory-alignment