좋은 아침입니다~
한가지 질문이 있는데요 스마트 포인터라는 녀석은 함수블록내에서 선언되었다가
1.함수가 정상적으로 종료될때나 2.함수 중간에 갑자기 return으로 종료해야하는 때나 3.예상치 못한 예외가 발생했을때나
위 세가지 상황 모두 소멸자가 호출되서 객체를 해제한다고 하는데
그렇다면 여기서 궁금한건 스마트포인터의 소멸자뿐만아니라 결국 어느 클래스든 소멸자라는 녀석은 위의 어느 상황이든 호출된다는거네요?
함수가 비정상적으로 종료될때랑 (이게 꼭 예상치못한 예외를 뜻하는건 아니겠죠) 미리 예상한 예외가 발생했을때는 커버를 못한다는 얘기처럼 보이는데
실제로 그렇지는 않을것 같습니다. 예외처리 안하려고 스마트 포인터 쓰는게 아니겠습니까. ㅎㅎ
다만 여러 가지의 스마트 포인터별로 제대로 스마트포인터 처리를 못하는 상황이 있습니다. (예를 들어 STL하고 같이 쓰면 안된다덩가.. 동적 배열하고 못쓴다든지.. 힙영역에 있는 메모리만 가능하다든지..) 그것은 각각의 스마트포인터 객체 소개에 아마 자세히 나와있겠죠.
-- This is for you new people. I have just one rule : Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?
--
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
일단 글대로라면..
함수가 비정상적으로 종료될때랑 (이게 꼭 예상치못한 예외를 뜻하는건 아니겠죠)
미리 예상한 예외가 발생했을때는 커버를 못한다는 얘기처럼 보이는데
실제로 그렇지는 않을것 같습니다. 예외처리 안하려고 스마트 포인터 쓰는게 아니겠습니까. ㅎㅎ
다만 여러 가지의 스마트 포인터별로 제대로 스마트포인터 처리를 못하는 상황이 있습니다.
(예를 들어 STL하고 같이 쓰면 안된다덩가.. 동적 배열하고 못쓴다든지.. 힙영역에 있는 메모리만 가능하다든지..)
그것은 각각의 스마트포인터 객체 소개에 아마 자세히 나와있겠죠.
--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?
--
댓글 달기