LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

Структуры могут занимать совершенно разный объём памяти

Можно при выделении памяти указать размер нужной структуры.

struct Struct *NewStruct(enum StructKind kind)
{
  size_t size;
  struct Struct *res;
  switch (kind) {
    case charKind: size = sizeof(CharStruct); break;
    case intKind:  size = sizeof(IntStruct);  break;
    default: return NULL;
  }
  res = malloc(sizeof(enum StructKind) + size);
  res->kind = kind;
  return res;
}

Исходная версия X512, :

Структуры могут занимать совершенно разный объём памяти

Можно при выделении памяти указать размер нужной структуры.