연결 구조 만들다가 두 노드가 서로를 참조하게 짰는데, 프로그램 끝날 때 소멸자가 하나도 안 불리는 걸 보고 누수를 의심하고 있습니다. 이런 식으로 짰어요.
struct Node {
std::shared_ptr<Node> next;
~Node() { std::cout << "소멸\n"; }
};
auto a = std::make_shared<Node>();
auto b = std::make_shared<Node>();
a->next = b;
b->next = a; // 서로 물림
a랑 b가 서로를 shared_ptr로 잡고 있으니까 스코프를 벗어나도 참조 카운트가 1 밑으로 안 떨어져서 해제가 안 되는 거 맞죠? 이럴 때 한쪽을 weak_ptr로 바꾸면 된다고 본 것 같은데, 바꾼 다음에 그 노드에 실제로 접근할 때는 어떻게 해야 하나요? lock() 쓰라는 얘기까진 봤는데 감이 안 와서요.