То, о чем я спрашиваю, - это хорошо известный трюк «последний член структуры имеет переменную длину». Он выглядит примерно так:
struct T {
int len;
char s[1];
};
struct T *p = malloc(sizeof(struct T) + 100);
p->len = 100;
strcpy(p->s, "hello world");
Из-за того, что структура размещена в памяти, мы можем наложить структуру на больший, чем необходимо блок, и обработать последний член так, как если бы он был больше, чем указанный 1 символ
.
Итак, вопрос в следующем. : Является ли эта техника технически неопределенным поведением? . Я ожидал, что это так, но мне было любопытно, что об этом говорится в стандарте.
PS: Я знаю о подходе C99 к этому, я бы хотел ответы должны придерживаться конкретно версии трюка, как указано выше.