我有这样的结构:
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/