이 포스트를 만든 목적 미루고 미루고 미루왔던 이전 글에 대한 피드백을 위해 만들었다. C++ 공부를 되돌아 보기 위해서 보다 훌륭한 프로그래머가 되기 위해서 이 포스트의 준비 상황 C++ 문법 이 포스트 전의 상황 쓸만한 C++ 컴파일러 SyntaxHighlight 쉽게 쓰려고 존댓말 생략 gVim 7.2 참조 링크 http://www.gamza.net/bbs/view.php?id=Article&no=16 http://gpgstudy.com/forum/viewtopic.php?t=3332 참조 서적 Exceptional C++ 서론 1년 전쯤에 감자넷에서 "객체 초기화"를 소멸자로 초기화 하는 글을 읽고 댓글을 달았었다. 얼마후 댓글에 댓글이 달린것을 보게 되었고, 차이점에 대해서 코드를 남겨서 확인해..
소멸자 검색 결과
이유 1. 메모리 릭 또는 프로그램 강제 종료를 일으킬수 있기 때문이다. 주의점 1. 관련 링크를 꼭 보도록 참조 1. 예외가 일어날 가능성이 있는 코드는 소멸자가 아닌 멤버 함수에 꼭 넣도록 해야 한다. 이것만은 잊지 말자! 1. 소멸자에서 예외가 빠져나가게 하지 말자. 2. 어떤 클래스의 연산이 진행되더가 던져진 예외에 대해서 사용자가 반응해야 할 필요가 있다면, 해당 연산을 제공하는 함수는 꼭 보통의 함수여야 한다. 관련링크 http://ikpil.tistory.com/365 http://redinlife.egloos.com/1627105 http://ilu8318.egloos.com/1705005 http://flashcafe.org/bbs/board.php?bo_table=programming_..
부제 : 예외처리의 막장인생 소멸자 개념정리 : 소멸자가 호출되는 경우 두가지 1. 객체가 통상적인 상태에서 소멸 되는 경우(유효범위를 벗어 났을 경우, delete 됬을 경우) 2. 예외 처리 매커니즘에 의해 객체가 소멸 되는 경우 : 예외처리가 진행중일때 예외가 발생 된다면 1. terminate 함수 호출 : terminate 함수의 역활 1. 프로그램을 종료시킴 이유 1. 예외 전파의 일부분으로서 진행되는 스택 되감기 동작 중에 terminate가 호출되는것을 막기 위해 2. 소멸자의 동작을 완전히 끝내도록 하기 위해서(소멸자에서 예외가 발생하면 소멸자는 호출되지 않은 상태이다!) 구현 방법 1. 소멸자 처리 중 예외가 발생하면, 소멸자에서 그 예외를 처리해 주면 된다. 예) delete::~te..
이유 1. 메모리 릭이 발생되기 때문이다. 2. 동적메모리 할당 중 에러 발생시, 예상치 못한 결과가 나올수 있다. (참고) 널포인터 삭제는 언제나 안전하기 때문이다. 해결방법 1. 할당에 실패할시 0값을 넣어라. (C++0x 가 적용되면 nuulptr 이 쓰일것으로 생각된다) 2. 소멸자에서 delete를 이용해라. 3. 다음의 사항을 기억해라. - 생성자 각각에서 포인터의 초기화, 만일 특정 생성자에서 메모리 할당되지 않았을 경우 0으로 초기화해라 - 할당 연산자에서 기존 메모리를 삭제하고 새로운 메모리의 할당해라(0값 해체는 아무일도 없음) - 소멸자에서 포인터를 삭제 해라 주의점 1. 클래스 생성시 new를 사용하지 않았다면, delete를 수행하지 말아라. (부득이하게 malloc으로 생성했다면..
최근댓글