powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамически выделяемая под объединения
4 сообщений из 4, страница 1 из 1
Динамически выделяемая под объединения
    #33378660
Olga2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача у меня вот какая, нужно создать объединения подобного рода
union Vizov
{
uchar Bytes[87];
struct
{
uchar Id;
ushort Dl;
unsigned int IndZ;
unsigned int IDentViz;
uchar mm[76];
};
};
Но при этом длина массива Bytes и mm будет заранее неизвестна, то есть под массив Bytes память должна выделяться динамически. Как это реализовать? Если использовать вариант
union Vizov
{
uchar *Bytes;
struct
{
uchar *Id;
ushort *Dl;
unsigned int *IndZ;
unsigned int *IDentViz;
uchar *[76];
};
};
и выделять память так
Vizov V;
V.Bytes=new uchar[87];
То при этом значения Id, Dl не получить. Объединение это я использую для чтения блока данных из файла.
Заранее спасибо
...
Рейтинг: 0 / 0
Динамически выделяемая под объединения
    #33378750
Olga2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как одним словом выделять память под объединения. И должны ли при этом все члены объединения быть указателями?
...
Рейтинг: 0 / 0
Динамически выделяемая под объединения
    #33379533
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не должны. Память выделяется как обычно, как для любых других стуктур.
Объектов переменной длины в С++ нет, поэтому ты сам должен выделять память и совмещать ее со структурой или объединением.
...
Рейтинг: 0 / 0
Динамически выделяемая под объединения
    #33379975
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Olga2004
union Vizov
{
uchar Bytes[87];
struct
{
uchar Id;
ushort Dl;
unsigned int IndZ;
unsigned int IDentViz;
uchar mm[76];
};
};
Но при этом длина массива Bytes и mm будет заранее неизвестна, то есть под массив Bytes память должна выделяться динамически. Как это реализовать?
Очень просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
union Vizov
{
 uchar Bytes[];
 struct
 {
  uchar Id;
  ushort Dl;
  unsigned  int IndZ;
  unsigned  int IDentViz;
  uchar mm[];
 };
};

union Vizov *v;
v = malloc(sizeof(union Vizov) + SIZE_OF_MM);
strcpy(v->mm, "some text");
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамически выделяемая под объединения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]