С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
6 / 6 / 0
Регистрация: 07.02.2019
Сообщений: 54
1

Удаление обьектов созданных оператором new сразу после выхода из функции

29.04.2020, 15:04. Показов 1133. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Вопрос следующий: есть ли какой-нибудь простой способ удаления обьектов созданных при помощи оператора new автоматически, сразу после выхода из функции в которой это было сделано? В boost есть вроде scoped_ptr, а вот в стандартных библиотеках найти не получается.

MSVC 141, visual studio 2017.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2020, 15:04
Ответы с готовыми решениями:

Нужно ли функции с оператором глобального разрешения ставить сразу за классом,в котором объявлены?
Добрый день! Подскажите, пожалуйста, обязательно ли функция или конструктор от определённого...

Область видимости динамически созданных обьектов
Доброго дня! Помогите, пожалуйста, с пониманием проблемы. Точнее решения. Как задать область...

После использования free? он не оказывает влияния после выхода из функции
Есть вот такая функция в которой используется free() void removeNode(struct Node** t) { int...

Автоматическое удаление файлов и настроек пользователя после выхода из системы
Здравствуйте. Работаю учителем информатики. Нодоело простоянно приводить компьютеры в нормальное...

2
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
29.04.2020, 15:20 2
Лучший ответ Сообщение было отмечено xChernobyl как решение

Решение

C++
1
2
3
4
5
6
7
8
9
void someFunction() {
    // ...
    std::unique_ptr <int> u {new int};
    // ..
} // Благодаря деструктору unique_ptr u уничтожится и отдаст память здесь
 
int main() {
    someFunction(); // Всё чики-пуки, никаких затрат памяти нет
}
P.S. Здесь это безопасно, но при передаче unique_ptr в пар-ах ф-ии лучше юзать std::make_unique

C++
1
2
3
4
5
void someFunction(std::unique_ptr <double> unique) {}
 
int main() {
    someFunction(std::make_unique <double> ());
}
std::unique_ptr и std::make_unique находятся в стандартной библиотеке <memory>
1
6 / 6 / 0
Регистрация: 07.02.2019
Сообщений: 54
29.04.2020, 15:20  [ТС] 3
Спасибо, просто думал что есть что-то более спициализированное. Вообщем мне подходит, тему можно закрывать.
0
29.04.2020, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2020, 15:20
Помогаю со студенческими работами здесь

Удаление строки/столбца таблицы после выхода из обработчика события
Пытаюсь сделать что-то типо умной таблицы. Например, удаляешь ты из ячейки значение, после, при...

Чтение массива сразу после удаление элемента
Подскажите как удалить элемент массива продолжить чтение массива с элемента который стоит после...

Удаление письма в Outlook сразу же после отправки
Форум, привет! Средством VBA формируется письмо и отправляется через Outlook. Подскажите,...

После выхода из функции в переменные записывается мусор
//Class1.h class Class2; class Class1 { public: double a1; char *a2; char *a3; ...

После выхода из функции, чтобы матрица не изменялась
Как сделать так, чтобы передать матрицу в функцию, в функции матрицу изменить (поменять элементы...

После выхода из функции, чтобы матрица не изменялась
Как сделать так, чтобы передать матрицу в функцию, в функции матрицу изменить (поменять элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru