tag:blogger.com,1999:blog-5754933877504806384.post6033626879898009129..comments2024-03-09T19:08:24.412+09:00Comments on 슭의 개발 블로그: RAII는 무엇인가Seulgi Kimhttp://www.blogger.com/profile/13356157795179922345noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-5754933877504806384.post-67714575849148464222019-04-03T09:39:21.748+09:002019-04-03T09:39:21.748+09:00답글을 이제야 봤네요. 답변 감사합니다 !!답글을 이제야 봤네요. 답변 감사합니다 !!baemincheonhttps://www.blogger.com/profile/09320002806196845857noreply@blogger.comtag:blogger.com,1999:blog-5754933877504806384.post-26070048785409379932018-12-27T00:26:49.260+09:002018-12-27T00:26:49.260+09:00대표적으로 Lock이 이런 이유로 RAII idiom을 사용합니다.
Lock은 보통 특정 ...대표적으로 Lock이 이런 이유로 RAII idiom을 사용합니다.<br />Lock은 보통 특정 영역에서 lock을 잡고, 그 영역이 끝나면 lock을 해제해야 합니다.<br />하지만 예외나 early return 등으로 exit point가 많아지는 경우는 실수로 lock을 해제하지 않는 경우가 종종 생기는데 이럴 때 RAII idiom을 사용하면 좋습니다.<br />자세한 내용은 C++의 scoped_lock이나 Rust의 Mutex를 참고하시기 바랍니다.<br />https://en.cppreference.com/w/cpp/thread/scoped_lock<br />https://doc.rust-lang.org/std/sync/struct.Mutex.htmlSeulgi Kimhttps://www.blogger.com/profile/13356157795179922345noreply@blogger.comtag:blogger.com,1999:blog-5754933877504806384.post-55126380174931491932018-12-24T00:25:50.126+09:002018-12-24T00:25:50.126+09:00"특정 스코프를 벗어나면 반드시 실행돼야 하는 코드들도 RAII를 이용해 처리할 ..."특정 스코프를 벗어나면 반드시 실행돼야 하는 코드들도 RAII를 이용해 처리할 수 있다."라는 문구가 있는데, 예시를 알려주실 수 있나요 ? 감이 안 잡히네요 ㅠbaemincheonhttps://www.blogger.com/profile/09320002806196845857noreply@blogger.comtag:blogger.com,1999:blog-5754933877504806384.post-91978328077235537222016-12-20T18:26:34.810+09:002016-12-20T18:26:34.810+09:00한동안 바빠서 블로그를 방치해놓고 있다 보니 이제야 봤네요. 답변 감사합니다.
말씀하신 대...한동안 바빠서 블로그를 방치해놓고 있다 보니 이제야 봤네요. 답변 감사합니다.<br />말씀하신 대로 c++의 new operator는 예외를 발생할 수 있으니 14번째 줄에서 null 포인터로 초기화해야 합니다.<br />null 포인터로 초기화하도록 수정했습니다.<br />하지만 삭제할 때 null 검사를 할 필요는 없습니다. c++은 null 포인터를 삭제할 때 아무것도 하지 않는 것이 보장됩니다.Seulgi Kimhttps://www.blogger.com/profile/13356157795179922345noreply@blogger.comtag:blogger.com,1999:blog-5754933877504806384.post-83750482981678967242016-12-12T16:29:45.177+09:002016-12-12T16:29:45.177+09:00예제 2번째인 unmaintanableFunction 에 문제가 있습니다.
new Res...예제 2번째인 unmaintanableFunction 에 문제가 있습니다.<br /><br />new Resource() 내부에서 exception 이 발생하는 경우<br />초기화되지 않은 resource 포인터를 삭제할 때, 메모리 오류가발생합니다.<br />null 로 초기화해야 하며, 동시에 삭제시에도 null 검사가 있어야 합니다. <br /><br />추가적으로 인스턴스의 메모리할당만 못하는 경우,<br />컴파일러의 구 버전이나 설정에 따라, exception 이 발생하지 않고,<br />null만 return 되는 경우가 있는데, 예제 2,3번이 모두 해당됩니다.<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5754933877504806384.post-11541677107956348432015-11-19T16:00:46.939+09:002015-11-19T16:00:46.939+09:00잘 읽고 감니다 슭형잘 읽고 감니다 슭형Anonymoushttps://www.blogger.com/profile/07270940121847957646noreply@blogger.com