Псевдокод на C ++
char* data = new char[determine_size()];
// ... do some stuff with data
delete[] data;
// ... repeat process
Таким образом, в основном, данные каждый раз повторно выделяются в новый массив с различным размером. Хотя каждый раз предыдущее распределение всегда будет отменено первым.
Приведет ли это к фрагментации памяти?
Я не очень знаком с управлением памятью в C ++; мое внутреннее чувство говорит мне, что это не очень хорошая идея.
Ты спрашиваешь,
«Это приведет к фрагментации памяти?»
Хорошо выделение памяти есть необходимо для фрагментации, но это не так достаточно.
То есть это зависит, на многих вещах, в том числе шаблон распределения и диспетчер памяти.
Таким образом, как заявлено, вопрос действительно неопровержим.
Но еще можно дать хороший совет.
Не используйте сырые массивы и new
используйте вместо, например, std::vector
а также std::string
,
Других решений пока нет …