Каковы реальные преимущества гибкого члена массива?
После прочтения некоторых постов, связанных счлен гибкого массиваЯ до сих пор не до конца понимаю, зачем нам нужна такая функция.
Возможный дубликат:
Гибкие члены массива в 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) нене содержат реальный размер данных? Я уверен, что я должен пропустить еще несколько важных моментов для этой функции. Пожалуйста, укажите это для меня.