Почему этот std::weak_ptr, очевидно, препятствует освобождению памяти и как я могу обнаружить эту ошибку? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Почему этот std::weak_ptr, очевидно, препятствует освобождению памяти и как я могу обнаружить эту ошибку?

Сообщение Anonymous »

В моем коде на C++ у меня есть std::shared_ptr, который выходит за пределы области видимости, что уменьшает счетчик его использования до 0, поэтому указанный объект уничтожается. Это работает нормально. Однако, если у меня есть std::weak_ptr, который указывает на этот std::shared_ptr и остается активным, указанная память, очевидно, фактически не освобождается.
Пример:

Код: Выделить всё

#include 
#include 

int main() {
int* my_raw_ptr = nullptr;
std::weak_ptr my_wp;
{
auto my_sp = std::make_shared(42);
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79097435/why-does-this-stdweak-ptr-apparently-prevent-freeing-memory-and-how-can-i-det[/url]

Вернуться в «C++»