부제 : auto_ptr 효과적으로 사용 해라. 이유 1. 생성단계에서 동적메모리 할당시 메모리 릭이 발생할수 있기 때문이다. 구현 방법 1. 역시 메모리 할당을 auto_ptr(이런 성격의 객체)이 받으면 된다. 예) auto_ptr test; 선언 후 초기화 리스트에서 초기화! new를 호출하여 초기화 주의점 1. auto_ptr 사용시 소유권이란 개념이 분명히 존재하므로 잘 이해하고 적재적소에 써야 한다. 개인적인 생각 1. 클래스 내부에서 메모리 누수를 막는 방법이 제일 좋은것 같다. 왜냐하면 객체의 생성 자체가 메모리 할당을 동반하는 작업이 많이 때문이다. 클래스 외부에서 이런 메모리 누수처리를 한다면, 정말 힘든 세상이 될것같다. 집안 싸움은 집안에서 끝내야 한다는 속담이 떠오른다. 참조 사항..
전체 글 검색 결과
부재 : 함수 내부의 동적 메모리 할당은 auto_ptr(의 성격으로 이해하면 더 좋을듯) 을 사용 해라! 이유 1. 소멸자는 객체 소멸시 반드시 호출 되는 성질을 이용하기 때문이다. (소멸자가 호출 안되는 에외도 있으나, 그건 차후에 설명하겠다고 스캇은 말한다.) 구현 방법 1. 동적메모리 할당시 반환되는 메모리를 인자로 같는 객체의 생성자를 만들고, 소멸자에 이 인자를 지워 준다. 효과 1. 함수 내부에서 예외가 발생하여, 함수 루틴이 종류가 되어도 객체는 소멸되기 때문에 삭제가 된다. 대표적 사례 1. 기본 지원되는 auto_ptr 을 사용하면 손쉽게 구현 가능하다. 2. auto_ptr 에 대해서 인터넷 검사면, 그 개념이 잡힐것이다. 간단한것은 스스로 만들어 써도 되지만 MEC++ 읽는 사람이라..
예외 처리 개념 위키 백과 : http://ko.wikipedia.org/wiki/%EC%98%88%EC%99%B8_%EC%B2%98%EB%A6%AC 이번 예외처리는 중요한부분을 8 챕터로 More Effecitve C++ 에서 설명한다. 항목 9 : 리소스 누수를 피하는 방법의 정공은 소멸자이다. 항목 10 : 생성자에서는 리소스 누수가 일어나지 앟게 하자. 항목 11 : 소멸자에서는 예외가 탈출하지 못하게 하자. 항목 12 : 예외 발생이 매개변수 전달 혹은 가상 함수 호출과 어떻게 다른지를 이해 하자 항목 13 : 발생한 예외는 참조자를 받아내자 항목 14 : 예외 지정 기능은 내철하게 사용하자. 항목 15 : 예외 처리에 드는 비용에 대해 정확히 파악하자. .. 이렇게 설명 되어 진다. 인터넷에서..
윈도우에서 확인할것을 콘솔창으로 띄워 확인 할수 있다. 윈도우에서도 가능하지만, 여러가지 신경써야 할것이 있어서 이것이 더 편하다. 컴파일러 옵션에서 설정 하는 방법이 있지만, 가시적이지 못해 난해하다. 그럴때는 헤더파일에 포함시켜 관리하는게 편한데... 어떤 코드냐 하면 #ifdef _DEBUG || DEBUG #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") #endif 이런 코드이다. _DEBUG 는 디버깅 모드로 컴파일 할때 활성화 되는 define 이니, 디버깅 할때만 확인 할수 있다. 혹 다른 컴파일러에서 .. 이것이 활성화가 안되서 안된다면 명시적으로 적어 주자. #define _DEBUG 라고.. 그럼! 모두들 열..
출처 : 벌나래 ( HOMEPAGE ) 사유 : 귀중한 데이터가 날라갈까봐 블러그에 옮겨 둔다. 자세한 설명이 아주 일품이다 원문 : 링크 컴파일러가 특정 머신에서 기계어 코드로 변환되어 데이터를 저장하고 가져오는데는 보통 word 단위(4 byte)로 입출력하는 경우가 많다. 이것은 시스템의 효율성을 가져오기 위해서 단위 출력/입력을 하는 것이다. 원래 이렇게 되는 것은 CPU의 특성때문이다. CPU 에서 가장 비용이 많이 들어가는 것은 메모리에 접근하는 작업인데 이 작업이 잦으면 별로 효율적이지 못하게 된다. 따라서 CPU는 (보통 32bit 머신이라면) 주변에 4 byte(32bit)의 데이터 공간을 같이 가져온다. 따라서 1 cycle당 32 bit 단위로 한번에 가져오게 되는 것이다. (항상 3..
부재 : new와 operator new 의 차이점에 대해서 숙지해라. 이유 1. operator new 와 new 는 엄연히 차이를 보이기 때문이다. 해결방법 .. 각 차이점을 이해 한다. new 연산자는 1. 오버로딩이 안된다. 2. 내부적으로 operator new를 호출한다. 3. 생성자를 호출한다. 4. 객체형 포인터를 반환한다. operator new 는 1. 메모리 할당을 받는다. 2. void *형을 반환한다. delete 역시 마찬가지다. operator new 와 operator delete 는 C++ 판 malloc 과 free 함수 이다. 배열을 new 할때의 차이점 1. new는 똑같지만 내부적으로 operator new[] 를 호출 한다. 2. 그리고 각각 new에 의해서 생성자..
최근댓글