이유 1. 동적 메모리 할당시, 메모리가 되었을 때, 여러 이유로 오류가 날수 있다. 이 오류에 대해서 대처하지 않으면 프로그램이 안정적이지 못하기 때문이다. (참고)new연산자는 메모리 요구를 수행하지 못하면, 수행될때까지 루프를 돈다. 해결 방법 operator new가 요구된 메모리를 할당할 수 없을 때 new 핸들러 함수는 다음중 한가지를 실행시킨다. 1. 좀더 많은 메모리르 확보한다. 방법 : 프로그램 시작시 큰 메모리를 할당받게 한다. 그리고 new 핸들러가 호출되었을때, 이 미리 받은 메모리를 해체한다. 단점 : 가끔 메모리가 적거나 좀더 많은 메모리가 확보되지 않으면, 다음에 발생되는 new가 원할히 작동될수 없다. 2. 다른 new 핸들러를 설치한다. 방법 : set_new_handler..
책 정리/Effective C++ 2판 검색 결과
이유 1. 메모리 릭이 발생되기 때문이다. 2. 동적메모리 할당 중 에러 발생시, 예상치 못한 결과가 나올수 있다. (참고) 널포인터 삭제는 언제나 안전하기 때문이다. 해결방법 1. 할당에 실패할시 0값을 넣어라. (C++0x 가 적용되면 nuulptr 이 쓰일것으로 생각된다) 2. 소멸자에서 delete를 이용해라. 3. 다음의 사항을 기억해라. - 생성자 각각에서 포인터의 초기화, 만일 특정 생성자에서 메모리 할당되지 않았을 경우 0으로 초기화해라 - 할당 연산자에서 기존 메모리를 삭제하고 새로운 메모리의 할당해라(0값 해체는 아무일도 없음) - 소멸자에서 포인터를 삭제 해라 주의점 1. 클래스 생성시 new를 사용하지 않았다면, delete를 수행하지 말아라. (부득이하게 malloc으로 생성했다면..
이유 1. 메모리 릭 발생되기 때문이다. - new string[100] 했으면 delete []string 해줘야 한다. delete string 하면 100개의 요소중 1개만 해제한다. - 클래스의 객체라면 소멸자 역시 1번만 발생 된다. - typedef 사용시 delete시 착각의 위험에 빠질수 있다. 해결 방법 1. 동일한 형식으로 사용 한다. 2. typedef를 사용 하지 마라! 덧붙여 1. 여러 문자열을 할당받고 싶다면 vector을 사용 해라. 더 편하다
이유 1. malloc과 free는 생성자와 소멸자의 존재자체를 모른다(호출 자체를 안해준다.) 2. 1번의 문제로, 메모리릭 발생 위험이 따른다.(사용자가 간과했다간) 3. 1번의 문제로, 초기화 작업을 부수적으로 해야 한다. 4. 1번의 문제로 , 가독성을 떨어뜨릴수 있다(new와 malloc의 혼용 사용으로) 해결방법 1. 혼용 사용을 왠만해선 하지 마라 2. new와 delete를 사용 해라
이유. 1. C++ 방식에선 iostream 이 더 이식성이 좋고. 편하다. - C++은 객체지향적 설계가 가능하기 때문에 stdio.h는 사용상의 불편이 따른다. 예) class나 struct의 경우 스트림 입출력시 printf나 scanf는 불편하다. 해결방법. 1. #include 된 것을 으로 바꾸어라. 2. operator > 를 정의해서 사용해라(struct나 class 사용시) 덧붙여 1. iostream.h 와 iostream 은 다른것이기에 iostream을 사용해라.
최근댓글