Использование reallo c для увеличения размера по сравнению с созданием большего динамического массива c - PullRequest
1 голос
/ 10 апреля 2020

Я задаю этот вопрос ради обучения; обычно я бы использовал вектор или связанный список для этой проблемы.

Если размер динамического c массива изменяется во всем основном коде, что более эффективно или логично использовать: создание нового динамического c массив, который в два раза больше предыдущего и копирует в него предыдущие элементы, или использует reallo c, чтобы увеличить массив Dynami c? И если один из них более эффективен или логичен, то почему?

1 Ответ

1 голос
/ 10 апреля 2020

realloc может расширить существующий блок памяти на месте, если есть место, полностью избегая весь процесс allocate + copy + free. Использование new[] не допускает такой возможности.

Если вы пишете idiomati c C ++, вы должны использовать std::vector, что делает то же самое под капотом. Но ради обучения, если у вас нет std::vector, используйте realloc.

Обратите внимание, что realloc не является объектно-ориентированным. Он не будет вызывать конструкторов и деструкторов. Если вы собираетесь использовать его в C ++, вам лучше точно знать, что вы делаете!

...