A struct
может иметь элемент гибкого массива в качестве последнего члена. В вашем случае это будет выглядеть так:
typedef struct container {
int file_descriptor;
char file_content[];
}container;
Размер struct
равен (грубо говоря) размеру, в котором последний элемент был пропущен. Затем вы можете динамически выделить экземпляр этой структуры с таким количеством места, которое необходимо для последнего члена. Например:
container *mycontainer = malloc(sizeof(*mycontainer) + 50000);
Кроме того, поскольку размер структуры может варьироваться таким образом, он не может быть членом массива или другого struct
или union
.