@3xa1t3d

Как правильно реализовать освобождение памяти выделенной в функции?

Есть функция типа int*(**) array_init(), которая инициализирует массив, выделяет под него память с помощью new и возвращает в переменную, объявленную в main, указатель на этот массив.
Как правильно освободить память выделенную под одномерный(либо двумерный массив), без вероятности получить непредвиденное поведение?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
Все до безобразия просто:
Вы выделяете память в момент, когда она вам нужна, а удаляете когда эта память вам более не нужна.
Соотвественно, вам нужна функция array_deinit(), которая возьмет на себя непосильную ношу освобождения памяти в момент, когда вы больше не планируете обращаться к своему двумерному массиву.

В простейшем случае, в С++ подобный функционал оборачивают в класс, который, в свою очередь, обязательно должен почистить за собой память хотя бы в деструкторе.

Также в современном С++ не принято использовать new/delete без веской причины (например, вы пишете супер быстрый, современный контейнер, в котором хотите управлять всеми аллокациями самостоятельно), а рекомендуется использовать умные указатели для работы с памятью.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы