То, о чем я прошу, - это хорошо известный "последний член структуры с переменной длиной". Это происходит примерно так:
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
.
Итак, вопрос: Является ли это технически технически поведение undefined?. Я бы ожидал, что это так, но было любопытно, что говорит об этом стандарт.
PS: Я знаю о подходе C99 к этому вопросу, я бы хотел, чтобы ответы на них были специально привязаны к версии трюка, как указано выше.