N.Ravi Raj Ответов: 0

Утечка памяти с помощью shared_ptr C++


Привет,
Я использую shared_ptr и объявляю как
std:: shared_ptr< classa> ptr = std:: make_shared< classa>();

Поэтому, когда я когда-либо хочу использовать, я непосредственно вызываю указатель и использую его в методах.
при использовании такого указателя память увеличивается для каждого вызова метода.
Я вижу увеличение памяти в Taskmanager.


Может ли кто-нибудь помочь мне, как я могу освободить память или удалить/сбросить указатель в/после вызова функции?


Спасибо за помощь!!

Что я уже пробовал:

1. я попытался сбросить указатель после вызова функции ptr. reset();
2. сделать его как weak_ptr
3. Создание синглтона

Jochen Arndt

На этот вопрос нельзя ответить, не увидев использования shared_ptr.

Вы можете установить точку останова внутри деструктора classa, чтобы увидеть, когда он будет удален. Если этого никогда не произойдет, то объект по-прежнему будет принадлежать shared_ptr(s).

N.Ravi Raj

я удаляю shared_ptr только в деструкторе.

Jochen Arndt

Вы удаляете shared_ptr?
shared_ptr был введен, чтобы избежать ручного удаления, потому что они отслеживают использование и удаляют, когда больше не ссылаются.

Вы действительно должны показать нам соответствующие фрагменты кода.

0 Ответов