Нет, ты не можешь использовать realloc() на указателях, выделенных через new. Такая комбинация нарушает принципы управления памятью в C++ и может привести к серьёзным ошибкам во время выполнения.
Когда realloc() нужно изменить размер памяти, он выполняет побитовое копирование данных. Этот подход несовместим с объектами C++, потому что:
Ещё одна критическая проблема в том, что new и malloc() могут использовать разные реализации кучи:
new, принадлежит куче C++ runtimemalloc(), принадлежит куче стандартной библиотеки CИспользуй идиоматичные для C++ решения для управления динамической памятью:
std::vector<T> для динамических массивов — он безопасно обрабатывает все реаллокацииstd::unique_ptr<T> или std::shared_ptr<T> для отдельных объектовnew с delete, malloc() с free()Никогда не смешивай стратегии управления памятью C и C++. Всегда используй конструкции C++ (new/delete или стандартные контейнеры) для кода на C++.
Вызов realloc() на памяти, выделенной с помощью new, безопасен, потому что современные компиляторы C++ обеспечивают автоматическое связывание между кучами C и C++.
Новый — ещё не проверен сообществом
Вы