powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно перевыделять память?
5 сообщений из 5, страница 1 из 1
Как правильно перевыделять память?
    #39543112
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реализую двумерный динамический массив. При его создании количество элементов по обоим измерениям точно не известно.

Поэтому хочется как-то оптимально перевыделять память:
1. delete и new убивают весь кусок памяти и создают его по новой.
2. realloc не переносит старые данные в новую память, поскльку у нее в параметрах нет размера старого объема памяти.

Как подобную задачу решить лучше всего?

p.s. Второе измерение массивов принимает большИе значения (порядка миллиона), поэтому желательна конструкция "массив массивов" (а не один кусок, в котором с помощью размеров массива и двух индексов определяется текущий единый индекс).
...
Рейтинг: 0 / 0
Как правильно перевыделять память?
    #39543124
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я правильно понимаю, что функция realloc получает указатель на старый кусок, чтобы попытаться там же и выделить память?
...
Рейтинг: 0 / 0
Как правильно перевыделять память?
    #39543295
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,
std::map<std::pair<size_t,size_t>,type_to_store>
Можно обращаться к любой паре (x / y), можно проверить существование элемента, можно не хранить отсутствующие.
...
Рейтинг: 0 / 0
Как правильно перевыделять память?
    #39543323
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL2. realloc не переносит старые данные в новую память, поскльку у нее в параметрах нет размера старого объема памяти.
Ошибаешься, realloc переносит http://www.cplusplus.com/reference/cstdlib/realloc/?kw=realloc

AlekseySQLp.s. Второе измерение массивов принимает большИе значения (порядка миллиона), поэтому желательна конструкция "массив массивов" (а не один кусок, в котором с помощью размеров массива и двух индексов определяется текущий единый индекс).
Можешь вектором сделать
Код: plaintext
1.
std::vector<std::vector<my_type_t>> arr;
...
Рейтинг: 0 / 0
Как правильно перевыделять память?
    #39543380
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

спасибо за подсказку по realloc- не думал, что она такая умная!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно перевыделять память?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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