Jakie są prawdziwe zalety elastycznego członka macierzy?

Po przeczytaniu niektórych postów związanych zelastyczny element tablicy, Wciąż nie do końca rozumiem, dlaczego potrzebujemy takiej funkcji.

Możliwy duplikat:
Elastyczne elementy tablicy w C - złe?
Czy jest to także elastyczny element Array Struct w C?

(Obwiniaj mnie, jeśli nie rozwiązałem mojego problemu z możliwych duplikatów pytań powyżej)

Co to jestreal różnica między następującymi dwiema implementacjami:

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

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

Wiem, że rozmiar h2 jest tak, jakby pominięto element elastycznej tablicy (dane), to znaczysizeof(h2) == sizeof(size_t). Wiem też, że elastyczny element tablicy może pojawić się tylko jako ostatni element struktury, więc oryginalna implementacja może być bardziej elastyczna w pozycjidata.

Moim prawdziwym problemem jest to, dlaczego C99 dodaje tę funkcję? Po prostu dlatego, że sizeof (h2) nie zawiera rzeczywistej wielkości danych? Jestem pewien, że muszę tęsknić za ważniejszymi punktami tej funkcji. Proszę mi to wskazać.

questionAnswers(3)

yourAnswerToTheQuestion