|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 21
|
|
О перевыделении памяти для массива объектов28.07.2013, 17:04. Показов 9994. Ответов 23
Метки нет (Все метки)
Мне необходимо сделать динамический массив объектов класса, который будет расширяться при необходимости.
Понятно, что для такого существует выделение через malloc и перевыделение через realloc, но malloc не годится для объектов, тк не вызывает конструктор. Посоветуйте максимально эффективный с точки зрения производительности вариант пожалуйста (думал над выделением новой памяти через new[], копирования из существующего массива объектов в новый и удаление исходного, но мне вариант это показался некрасивым). Готовые решения типа std::vector использовать нельзя.
0
|
|
| 28.07.2013, 17:04 | |
|
Ответы с готовыми решениями:
23
Резервирование памяти/освобождение памяти для трехмерного массива Выделение памяти для массива через функцию и использование этого массива |
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
| 28.07.2013, 17:07 | |
|
0
|
|
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
| 28.07.2013, 17:11 | |
|
Мне кажется не получится, т.к при новом выделении сотрутся старые данные. Как вариант заранее обьявлять большое кол-во чтоб хватило
0
|
|
| 28.07.2013, 17:19 | |
|
0
|
|
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|||||||
| 28.07.2013, 17:32 | |||||||
0
|
|||||||
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
| 28.07.2013, 18:05 | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||
| 28.07.2013, 18:17 | |||||||
0
|
|||||||
|
Неэпический
|
|
| 28.07.2013, 18:32 | |
|
0
|
|
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
| 28.07.2013, 18:43 | |
|
0
|
|
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||
| 28.07.2013, 18:55 | ||||
|
0
|
||||
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
| 28.07.2013, 18:57 | |
|
Все понятно.
0
|
|
|
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
|
||||||
| 28.07.2013, 19:24 | ||||||
|
http://ideone.com/WQ63ec
1
|
||||||
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 21
|
||||||||||||||||
| 03.08.2013, 11:57 [ТС] | ||||||||||||||||
|
Olivеr, Спасибо, но у меня почему то нет функции make_move_iterator (конечно, файл <iterator> подключен). Использую VC++ 2008, как я понял из гугла, make_move_iterator есть только в новом стандарте, который 2008 студией не поддерживается. А можно показать пример максимально простой? STL я еще не изучал, и использовать ее не желательно к тому же, необходимо изучить максимально подробно работу с памятью для объектов, а не пользоваться готовыми решениями STL (задача то не практическая а в целях изучения
). Суть такова, у меня есть класс, который является максимальноп простой реализацией динамического расширяемого массива объектов, например:
0
|
||||||||||||||||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||
| 03.08.2013, 12:19 | ||
|
Ах да, и никаких memcpy() для не POD-типов (читай: тупо интов, флоатов, или там сишных структурок).
0
|
||
|
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 21
|
||
| 03.08.2013, 12:28 [ТС] | ||
|
0
|
||
|
|
|||||||||
| 03.08.2013, 13:12 | |||||||||
|
Добавлено через 1 минуту Добавлено через 3 минуты А в корректном копировании через цикл (или через std::copy) он бы вызвался и сохранил бы нам данные от удаления деструктором. Правило трёх же! http://ru.wikipedia.org/wiki/%... 0%B8%D0%B5) Добавлено через 8 минут
1
|
|||||||||
|
~ Эврика! ~
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|||
| 03.08.2013, 13:15 | |||
|
0
|
|||
|
|
||
| 03.08.2013, 13:18 | ||
|
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 03.08.2013, 13:23 | |
|
Kuzia domovenok, Учитывая, что сейчас текущая версия - MSVC2012, то ДА.
Ну или не пользоваться фичами, но это не значит, что люди на форуме не могут использовать С++11 там где удобно, любой код с использованием С++11 можно переписать на С++03 так-то (ну ок, не берем в расчет variadic templates).
1
|
|
| 03.08.2013, 13:23 | |
|
Помогаю со студенческими работами здесь
20
Метод для массива объектов класса Функция для перевыделения памяти для массива Нужно ли вызывать деструкторы для объектов помувленного массива?
Ручное распределение памяти для массива объектов класса Qt Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|