책
이펙티브 C++(381p ~ 392p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 381p ~ 392p 이펙티브 C++(381p ~ 392p) 요약 항목 54: TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자 C++은 언어 자체의 기능 외의 새로운 기능들 대부분은 기존의 표준 라이브버리에 추가되는 형태로 버전업이 되고 있다. TR1(1차 기술 보고서, Technical Report 1)이 이에 포함된다. TR1이 포함된 것을 가리켜 C++ 표준 1.1이라고 부르는 경우를 볼 수 있는 것도 이런 의미 때문이며, TR1의 기능은 사실상 모든 종류의 라이브러리와 응용프로그램에 영향을 미치고 있다. TR1에 무엇이 들어 있는지 살펴보는 역사적인 순간에, C++98에 명시되어 ..
이펙티브 C++(370p ~ 381p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 370p ~ 381p 이펙티브 C++(370p ~ 381p) 요약 항목 52: 위치지정 new를 작성한다면 위치지정 delete도 같이 준비하자 다음과 같은 new 표현식을 썼을 때 호출되는 함수는 두 개이다. operator new 호출 Widget의 기본 생성자 호출 Widget *pw = new Widget; 이 상황에서 첫 번째로 호출되는 operator new 호출은 무사히 지나갔는데, 두 번째로 호출되는 Widget의 기본 생성자를 호출하는 과정에서 예외가 발생했다고 가정해보자. 이런 경우에는 첫 단계에서 이미 끝난 메모리 할당을 어떻게 해서든 취소하지 않으면 안 된다. 코드에서 이런 상황을..
이펙티브 C++(360p ~ 369p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 360p ~ 369p 이펙티브 C++(360p ~ 369p) 요약 항목 50: new 및 delete를 언제 바꿔야 좋은 소리를 들을지를 파악해 두자 개념적으로 보면 operator new를 직접 만드는 것은 어려운 작업이 아니다. 다음은 버퍼 오버런 및 버퍼 언더런을 탐지하기 쉬운 형태로 만들어 주는 전역 operator new이다. static const int signature = 0xDEAFBEEF; typedef unsigned char Byte; // 이 코드는 고쳐야 할 부분이 몇 개 있다. void* operator new(std::size_t size) throw(std::bad_all..
이펙티브 C++(350p ~ 361p)
이펙티브 C++ https://www.yes24.com/Product/Goods/17525589 페이지 350p ~ 361p 이펙티브 C++(350p ~ 361p) 요약 항목 49: new 처리자의 동작 원리를 제대로 이해하자 new를 사용할 때 할당된 객체의 클래스 타입에 따라서 메모리 할당 실패에 대한 처리를 다르게 가져가고 싶은 경우가 있다. class X { public: static void outOfMemory(); }; class Y { public: static void outOfMemory(); }; X* p1 = new X; // 메모리 할당이 실패하면 X::outOfMemory 호출 Y* p2 = new Y; // 메모리 할당이 실패하면 Y::outOfMemory 호출 C++에는 특정..