struct T {
int len;
char s[1];
};
struct T *p = malloc(sizeof(struct T) + 100);
p->len = 100;
strcpy(p->s, "hello world");
由于结构体在内存中的布局方式,我们能够将结构体覆盖到比必要更大的块上,并且将最后一个成员视为大于指定的
1 char
。因此问题是:这种技术是否属于未定义行为? 我认为它是,但很想知道标准对此有何规定。
PS:我了解C99方法,但希望答案专门针对上述技巧。
malloc
而不是在相同分配的块中立即存储它,则会浪费更多空间)。如果您有大量小对象或经常访问它们,则在此处使用指针是愚蠢的。 - R.. GitHub STOP HELPING ICE