Каковы реальные преимущества гибкого члена массива?

После прочтения некоторых постов, связанных счлен гибкого массиваЯ до сих пор не до конца понимаю, зачем нам нужна такая функция.

Возможный дубликат:
Гибкие члены массива в C - плохо?
Является ли это гибким элементом массива в C?

(Вини меня, если я не решил мою проблему из возможных повторяющихся вопросов выше)

Что этореальный Разница между следующими двумя реализациями:

struct h1 {
    size_t len;
    unsigned char *data;
};

struct h2 {
    size_t len;
    unsigned char data[];
};

Я знаю, что размер h2 такой, как если бы гибкий элемент массива (данные) были опущены, то естьsizeof(h2) == sizeof(size_t), И я также знаю, что гибкий элемент массива может появляться только как последний элемент структуры, поэтому исходная реализация может быть более гибкой в положенииdata.

Моя настоящая проблема в том, почему C99 добавляет эту функцию? Просто потому, что sizeof (h2) не содержит реального размера данных? Я уверен, что я должен пропустить еще несколько важных моментов для этой функции. Пожалуйста, укажите это для меня.

Ответы на вопрос(3)

Ваш ответ на вопрос