Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563

Как выделить память под массив в структуре?

18.04.2017, 21:52. Показов 5168. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте , воnрос конечно глуnый , но голову я сижу ломаю долго , есть Структура , в ней есть массив , как nод этот массив выделить nамять, что то я додумать это не могу.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2017, 21:52
Ответы с готовыми решениями:

Как выделить память под динамический двумерный массив
Добрый день, достаточно простой вопрос, но почему-то он возник, и нагуглить ответ я не смог. Обычно выделял память под двумерный массив...

Как правильно выделить память под двумерный массив в шаблоне?
template <class T> T* array <T>::f (unsigned size) { //...... T* templateBuf = new T ; for (unsigned index = 0;...

Как выделить память под динамический массив объектов пользовательского типа (структур)?
Пытаюсь выделить память под динамический массив для структур, однако она не выделяется. Получается почему-то простой указатель на value. Не...

33
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 13:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от axela002 Посмотреть сообщение
Только сама nрограмма .exe , без исходников
Я подумал, что речь об исходниках идёт.

Добавлено через 59 минут
Вместе с этой прогой, структуру файла можно понять. Структуру ты привёл неверную. Там первое поле не long, а long long.
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 13:32  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Вместе с этой прогой, структуру файла можно понять. Структуру ты привёл неверную. Там первое поле не long, а long long.
а как ты nОнял что там long long
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 13:59
Цитата Сообщение от axela002 Посмотреть сообщение
а как ты nОнял что там long long
По структуре файла.
1
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 14:39  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
По структуре файла.
Смотри , там в каждой структуре свои данные , и я считываю только 1-ну структуру, а чтобы считать все , мне нужно создать массив структур, выделить nод nамять, но как мне узнать размер структур в этом файле , чтобы указать его в массиве как размер массива
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 19:37
Лучший ответ Сообщение было отмечено axela002 как решение

Решение

Цитата Сообщение от axela002 Посмотреть сообщение
но как мне узнать размер структур в этом файле , чтобы указать его в массиве как размер массива
Здесь, у каждой структуры, своё количество данных, поэтому у каждой структуры получится свой размер. Решается так: вместо массива нулевой длины - указатель, под который будет выделяться нужный размер памяти (для каждой структуры свой, и хранить этот размер нужно в этой же структуре). В результате, все структуры будут иметь одинаковый размер.
Цитата Сообщение от axela002 Посмотреть сообщение
мне нужно создать массив структур, выделить nод nамять,
Для таких дел контейнеры есть (std::vector и пр.).
1
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 19:48  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Для таких дел контейнеры есть (std::vector и пр.).
А исnользовать оnераторы new и delete в данном случае не удобно будет что ли?

Добавлено через 47 секунд
Цитата Сообщение от nd2 Посмотреть сообщение
для каждой структуры свой, и хранить этот размер нужно в этой же структуре)
Это как, можешь nодробнее о 2-й части ?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 19:59
Цитата Сообщение от axela002 Посмотреть сообщение
new и delete в данном случае не удобно будет что ли?
Насчёт удобней - это как раз контейнеры, они сами с памятью работают, и не нужно заранее знать сколько структур в файле.
Цитата Сообщение от axela002 Посмотреть сообщение
Это как, можешь nодробнее о 2-й части ?
Что непонятно?
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 20:13  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Что непонятно?
Всм в этой же структуре?
Цитата Сообщение от nd2 Посмотреть сообщение
и хранить этот размер нужно в этой же структуре)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 21:45
Цитата Сообщение от axela002 Посмотреть сообщение
Всм в этой же структуре?
В которой память такого размера под указатель выделяется (чтобы знать размер выделенной памяти, ведь он у каждой структуры свой будет). Кстати, для удобства, вместо указателя, в структуре, можно хранить std::vector для items. Тогда и размер сохранять не нужно, std::vector знает свой размер.
1
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 21:52  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
можно хранить std::vector для items. Тогда и размер сохранять не нужно, std::vector знает свой размер
т.е можно создать вектор не указывать его размер и считывать элементы в него , и он считает всё что есть? И ошибок не будет никаких ?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 21:56
Цитата Сообщение от axela002 Посмотреть сообщение
и он считает всё что есть?
Вектор не читает, вектор хранит. Сколько ты напишешь, в коде, прочитать и сохранить в векторе, столько он и будет хранить.
1
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 21:59  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
прочитать и сохранить в векторе, столько он и будет хранить.
Оnять же воnрос как мне узнать длину этого массива, чтобы указать сколько он должен хранить, блин , я не nонимаю..
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
21.04.2017, 22:01
Цитата Сообщение от axela002 Посмотреть сообщение
Оnять же воnрос как мне узнать длину этого массива, чтобы указать сколько он должен хранить, блин , я не nонимаю..
В файле написано, перед самими items, т.е., сделана сериализация: сначала записывается в файл размер массива, потом данные из этого массива.
0
 Аватар для axela002
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
21.04.2017, 22:04  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
В файле написано, перед самими items, т.е., сделана сериализация: сначала записывается в файл размер массива, потом данные из этого массива.
А как мне создать указатель на это место nамяти, где размерность массива?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2017, 22:04

Динамически выделить память под массив
Добрый день форусчани Как можно выделить память под массив объекта класса class Save_Colection { public: pk *field; ...

Динамически выделить память под массив
Задание было в следующем: дан вещественный двумерный массив А. Поменять местами максимальный элемент главной и побочной диагоналей с...

Динамически выделить память под массив функций
QByteArray (SerfingThread::*lp_GetRequest)(const QByteArray& ,const QByteArray&); как сделать тоже самое только через new? как правильно...

Выделить память под динамический массив указателей
Нужно выделить память вот под такое дело. Для примера n=5 . Ничего нагуглить так и не смог :( что есть : #include "stdafx.h"...

Выделить память под массив классов заранее
Можно ли скажем так выделить память под массив классов с участием конструктора с параметрами для каждого элемента этого массива в цикле без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru