책/책 공부(2)
-
MoreEffectiveC++_Chapter01
포인터(pointer) 와 참조자(reference)를 구분하자 reference 는 다음 3가지일 경우에 사용한다 1. 참조하고자 하는 객체를 미리 알고 있을 때 (선언과 동시에 초기화가 될 때) 2. 다른 객체로 바꾸어 참조할 일이 결코 없을 때 (상수성) 3. 포인터를 사용하면 문법상 의미가 어색해지는 연산자를 오버라이딩 할 때 (operator[] 같은) 위 3가지 경우를 제외하곤 모두 포인터를 사용한다 가능한 C++ 스타일 캐스트를 쓰자 이유? 가독성과 의미전달이 확실하기 때문에 C++ 스타일 캐스팅을 사용하는 것이 좋다 -static_cast : 일반적인 타입변환 -const_cast : const 또는 volatile 속성을 제거 -dynamic_cast : derived 또는 sibling..
2016.06.06 -
[Game Engine Architecture] 2부 로우레벨 엔진 시스템 - 메모리 관리(1)
동적 메모리 할당 ( malloc(), new 연산자 ) 는 매우 느리다->동적 메모리 할당을 피하거나 할당 비용을 크게 줄일 수 있는 메모리 할당자(allocator)를 직접 만들어야한다같은 데이터라도 작고 연속적인 메모리 블록에 들어있는 경우가 넓은 메모리 주소에 분산되 있는 경우보다 훨씬 빠르다 위 관점으로 코드의 메모리 활용 최적화를 해보자면, 동적메모리 할당(heap allocation) (ex. malloc(), free(), c++의 전역 new 연산자, delete 연산자) 은 보통 엄청 느리다. 두 가지 이유heap allocation 은 범용 목적이기 때문에, 1바이트에서부터 수 기가바이트까지 어떤 크기의 할당이라도 처리할 수 있어야한다 이를 관리하는데 부가적인 비용이 필요함malloc..
2014.11.21