SergeyTszyu
0 / 0 / 1
Регистрация: 18.03.2013
Сообщений: 19
|
||||||
#1 | ||||||
Как изменить размер динамического массива структур после того как был добавлен товар - C++06.05.2014, 22:39. Просмотров 310. Ответов 1
Метки нет Все метки)
(
Подскажите как мне изменить размер динамической массива структур после того как был добавлен товар , countProduct-это и есть размер массива структур.
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
06.05.2014, 22:39 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как изменить размер динамического массива структур после того как был добавлен товар (C++):
1
Изменить размер динамического массива - C++
Как изменить размер уже созданного массива в классе? - C++ Удаление динамического массива структур - C++
Передача динамического массива структур в функцию - C++ |
Заблокирован
|
|
06.05.2014, 23:03 | #2 |
никак. Если ты аллоцировал память под какой то объект динамический, то расширить этот блок памяти уже нельзя, т.к. память, ну допустим, оператором new занимается непрерывным блоком, дальше - другие приложения или же твоё, аллоцирует память под другие переменные, которым могут разместиться сразу за блоком исходного твоего массива, тоесть куда ты его расширять будешь? Залезать в память другой переменной кокой - нибуть, следующей в памяти за исходной? Вот по этому твой динамический массив никак расширить нельзя, т.к. нельзя гарантировать не занятость необходимого размера памяти для непрерывного блока, который нужно прикрепить к исходному, чтоб образовать новый.
Для подобных целей нужно динамический создавать новый объект, размер которого равен размеру исходного + дополнительный размер, на который ты хочешь расшириться, далее из старого объекта копировать данные в новый и удалять старый. Вот так вот. Чтоб не заниматься подобной ерундой и были придуманы уж более 10-и летия назад контейнеры STL, например std::vector или же std::string, которые делают всю грязную работу за тебя. Тоесть тебе не нужно беспокоиться об реалоцирование памяти объекта при его увеличение, это всё сделается за тебя. Конечно же, это относительно не быстрая операция и есть свои нюансы (можно зарезервировать сразу предполагаемый объём - reserve и тд), но в общем то на сегодняшний день, любой программист, по крайней мере, кто хоть отдалённо себя таким считает, должен знать STL.
0
|
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
06.05.2014, 23:03 |
Привет! Вот еще темы с ответами:
2
Освобождение памяти динамического массива структур - C++
Обращение к элементу динамического массива структур - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |