이유
1. 메모리 릭이 발생되기 때문이다.
2. 동적메모리 할당 중 에러 발생시, 예상치 못한 결과가 나올수 있다.
(참고) 널포인터 삭제는 언제나 안전하기 때문이다.
해결방법
1. 할당에 실패할시 0값을 넣어라. (C++0x 가 적용되면 nuulptr 이 쓰일것으로 생각된다)
2. 소멸자에서 delete를 이용해라.
3. 다음의 사항을 기억해라.
- 생성자 각각에서 포인터의 초기화, 만일 특정 생성자에서 메모리 할당되지 않았을 경우 0으로 초기화해라
- 할당 연산자에서 기존 메모리를 삭제하고 새로운 메모리의 할당해라(0값 해체는 아무일도 없음)
- 소멸자에서 포인터를 삭제 해라
주의점
1. 클래스 생성시 new를 사용하지 않았다면, delete를 수행하지 말아라.
(부득이하게 malloc으로 생성했다면, free를 이용 해라, 단 malloc은 언제나 피해라~ C++ 에선)
1. 메모리 릭이 발생되기 때문이다.
2. 동적메모리 할당 중 에러 발생시, 예상치 못한 결과가 나올수 있다.
(참고) 널포인터 삭제는 언제나 안전하기 때문이다.
해결방법
1. 할당에 실패할시 0값을 넣어라. (C++0x 가 적용되면 nuulptr 이 쓰일것으로 생각된다)
2. 소멸자에서 delete를 이용해라.
3. 다음의 사항을 기억해라.
- 생성자 각각에서 포인터의 초기화, 만일 특정 생성자에서 메모리 할당되지 않았을 경우 0으로 초기화해라
- 할당 연산자에서 기존 메모리를 삭제하고 새로운 메모리의 할당해라(0값 해체는 아무일도 없음)
- 소멸자에서 포인터를 삭제 해라
주의점
1. 클래스 생성시 new를 사용하지 않았다면, delete를 수행하지 말아라.
(부득이하게 malloc으로 생성했다면, free를 이용 해라, 단 malloc은 언제나 피해라~ C++ 에선)
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
2부까지 종료 (0) | 2008.05.07 |
---|---|
항목 10. operator new를 작성한다면 operator delete도 작성한다. (0) | 2008.05.07 |
항목 9. new의 "정상"형식을 감추지 않는다. (0) | 2008.05.07 |
항목 8. operator new와 operator delete 작성시 관례를 따른다. (0) | 2008.05.07 |
항목 7. 메모리가 모자랄 경우에 대비한다. (0) | 2008.05.07 |
항목 5. new와 delete의 사용시 동일한 형식을 이용한다. (0) | 2008.05.07 |
항목 4. C++ 스타일의 주석을 지향한다 (3) | 2008.05.07 |
항목 3. malloc과 free보다는 new와 delete를 사용한다. (0) | 2008.05.07 |
항목 2. <stdio.h> 보다는 <iostream>을 사용 한다. (0) | 2008.05.07 |
항목 1. #define보다 const 와 inline을 사용 한다. (0) | 2008.05.07 |
최근댓글