<div>전 씁니다만.... 다들 극도로 꺼려하시더라구요...</div> <div> </div> <div>일단 제가 쓰는 용도는 실패시 처리를 위함입니다. try catch써도 될거 같긴하지만... 일단 제일 편해서 ^^;;</div> <div> </div> <div>사실 이런 용도를 본게 어디서 봤더라... 하도 오래전에 본거라 기억도 가물가물...</div> <div> </div> <div>mfc 코드 추적하다 봤던가... 옛날 오거 엔진 만지다봤던가... DirectX 셈플소스였던가.... 암튼 다른소스 디버깅하다 본건데요</div> <div> </div> <div>예를들어</div> <div> </div> <div>int Init()</div> <div>{</div> <div> int step=0;</div> <div> classA *a=NULL,*b=NULL,*c=NULL;</div> <div> </div> <div> a=new classA;</div> <div> if(a->init()==false)</div> <div> goto initFailed;</div> <div> step=1;</div> <div> </div> <div> b=new classA;</div> <div> if(b->init()==false)</div> <div> goto initFailed;</div> <div> step=2;</div> <div> </div> <div> c=new classA;</div> <div> if(c->init()==false) </div> <div> goto initFailed;</div> <div> return 3;</div> <div> </div> <div>initFailed:</div> <div> SAFE_DELETE(a);</div> <div> SAFE_DELETE(b);</div> <div> SAFE_DELETE(c);</div> <div> return step;</div> <div>}</div> <div> </div> <div>위와 같은 소스가 있을경우 a가 init 실패하면 걍 delete a하고 return 하면 되지만...</div> <div> </div> <div>b나 c쯤가면 일일이 a와 b까지 delete해줘야하고.. 여기선 그나마 delete만 하면 끝이지만 </div> <div> </div> <div>실제 사용되는 소스들보면 좀만 귀찮게되면 일일이 해제 해줄 부분도 많고...</div> <div> </div> <div>실수로 까먹으면 아주 주옥되는경우도 있고 ㅎㅎㅎㅎ</div> <div> </div> <div>위소스처럼 initFailed부분에 모든 경우의 해제를 다몰아둔다음 goto하면 아주 깔끔하게 해제됩니다.</div> <div> </div> <div>조아요~ ㅎㅎ</div> <div> </div> <div>뭐 try catch와 비슷하긴하네요 throw대신 goto</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.