我有这样的结构:

typedef struct
{
int data[10];
} small_structure;

这个代码:
small_structure *s_struct;
void * chunk;

chunk = malloc(1000);
s_struct = chunk;

这样做可以吗?忽略这是在浪费记忆。

最佳答案

是的,那很好。malloc将返回适当对齐的内存。然而,仅仅将任意的void *指针赋给一个small_structure *变量是不好的。这意味着您的具体示例很好,但类似于:

int function(void *p)
{
    small_structure *s = p;
    return s->data[0];
}

不是!如果p不适合与small_structure *指针对齐,则只会导致未定义的行为。

关于c - 您能否将较小的结构放入更大的内存中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6905836/

10-11 22:25