실패는 대부분 할당과 해제 사이의 책임이 흐려지거나, 이미 끝난 주소를 다시 만질 때 생깁니다.
new 후 delete 경로가 빠져 힙 블록이 계속 남습니다.
delete 후 포인터가 해제된 주소를 계속 들고 있습니다.
같은 주소를 두 번 해제해 런타임 오류나 메모리 손상을 일으킵니다.
예방: 소유권을 하나로 제한new[]와 delete, 또는 new와 delete[]를 섞습니다.
가능하면 std::vector, std::string, 스마트 포인터처럼 수명을 객체가 관리하는 RAII 방식을 우선 사용합니다.