ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Effective C++...12
    일지 2022. 6. 12. 15:39

    자원 관리에는 객체가 그만!

    자원을 안전하게 사용할 수 있는 조건

    자원 관리를 수동으로 하게 되면 예상하지 못한 시점에 함수가 반환되거나 예외가 발생하는 경우 처리가 어려워지게 된다.

    이 것을 막기 위해 자원을 특정 객체에 넘기고 객체가 소멸될 때 자원을 삭제하도록 하면 안전하게 처리가 가능하다.

     

    이 자원 관리 객체는 다음의 조건을 만족해야 한다.

    • 자원을 획득한 후에 자원 관리 객체에게 넘긴다.
    • 자원 관리 객체는 자신의 소멸자를 사용해서 자원이 확실하게 해제되도록 한다.

     

    자원 관리 객체의 예와 주의 사항

    대표적인 자원 관리 객체에는 스마트 포인터가 있다.

    그런데 스마트 포인터는 객체의 제거 시 delete를 사용하기 때문에 배열을 동적 생성했을 때 안전하게 삭제해 줄 수 없다.

     

    이러한 이유는 대부분의 배열은 vector 또는 string으로 처리가 가능하기 때문인데, 만약 죽어도 배열을 동적 할당해 써야 한다면 부스트 라이브러리의 scoped_arrayshared_array를 사용하면 된다.

     

    댓글

Designed by Tistory.