В моем коде на 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]