使用malloc的结构数据对齐

知识库

考虑我有如下结构。

struct st
{
  char c;
  double d;
  int i;
};

根据内存对齐大小,struct st将为(1 + 7(papped)+ 8 + 4 + 4 + 4(papped))= 24字节

当我做malloc如下

struct st *p = malloc(sizeof(*p));

它将与

struct st *p = malloc(13);

由于我们只是传递结构的大小(13字节),因此malloc如何分配24字节以满足内存对齐要求?

Wallyk

这个问题错误地认为

struct st *p = malloc(sizeof(*p));

是相同的

struct st *p = malloc(13);

它不是。去测试,

printf ("Size of st is %d\n", sizeof (*p));

会打印24,而不是13。

分配和管理结构的正确方法是使用sizeof(X),而不是假设元素是如何打包或对齐的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章