여기서 중요한것은 "동적으로 할당한 배열 보다 좋다는 것이다." 이다. new 로 인하여 생성되는 메모리에 대해서는 사용자는 몇가지 염두를 해 두어야 한다. 하나. 메모리를 해체 해야 한다. 하나, delete도 메모리 타입에 맞추어서 해줘야 한다. 하나, delete는 new 와 쌍을 맞추어야 한다. 이런 염두를 없애기 위해선 vector 을 사용하면 된다고 말을 해준다. (그렇다고 동적 배열 메모리 할당 기능을 나쁘게 보는것은 아닐것이다.) string에 대해서도 이야기를 해 주었는데, string 은 내부에서 참조 카운팅이 되고 있을 수 있다. 이 참조 카운팅 때문에, 성능에 아주 좋은 효과를 보지만, 멀티 쓰레딩에선 독이 될수 있는 부분이라고 지적한다. 이럴때는 3가지 방법을 제시했는데, 하나, ..
책 정리 검색 결과
표준 STL에서 쓰레드 안전성을 갖춘 컨테이너가 없다는 것에 놀라지는 않는다. 나도 지금에서야 쓰레드 개념을 잡았으니.. 할말 없지 뭐, 지금은 다중 쓰레드 기반 프로그램이 많기 때문에, 이번 항목은 STL 컨테이너가 다중 쓰레딩 지원을 할수 있도록 요령을 가르쳐 준다. STL 컨테이너의 다중 쓰레드 지원 방법은 SGI(실리콘 그래픽스) 재정한 방식이 가장 좋다고 하고, 필자는 이중 두가지 핵심을 뽑아 말해 준다. 여러 쓰레드에서 읽는 것은 안전해야 한다.여러 쓰레드에서 다른 컨테이너에 쓰는 것은 안전해야 한다. 말처럼 쉽지만은 않기 때문에, 세부적인 기능(어떻게 해야 하는가?)에 어떤것을 두어야 할지 필자는 설명한다. 컨테이너의 멤버 함수를 호출하는 시간 동안 컨테이너에 락 걸기컨테이너가 만들어 내어 ..
항목 34 에서 가상 함수의 단점을 지적한 부분이 책에는 있는데, 나 같은 경우 생략했다. ^^; 단점은 가상함수는 기본 정의도 제공되기 때문에, 제공된 기본정의를 사용하다보면, 정작 다른 작동을 해야 할 때도 재정의를 해야 한다는것을 까먹고, 기본정의를 사용하여 디버깅이 아주 힘들수 있다는 점이다. 이것을 애초에 막고자 하려면 가상 함수를 대채할 무엇인가가 필요하다는 주제로 쓰여진 항목 35 이다. 자~ 이러한 단점들이 있음에도 가상 함수를 사용 한다는것을 찜찜해 하는 영리한 사람들은 생각하기 시작했다. "대체 할 수 있는게 없을까?" 필자는 두 팔을 다 걷어, 다른 방법을 몇가지 알려 준다고, 곽용재씨께서 말씀해 주셨다. ㅋ; 하나, 비가상 인터페이스 관용구(non-virtual interface :..
보통의 경우 메모리 할당은 new 나 malloc 으로 처리 한다. 하지만 좀더 상세하게 작동하고자 할 경우 할당자를 사용 한다고 하니, ... 일단 짚고 넘어가야겠다. 할당자(allocator)를 찾아봐도, 1. operator new 나 operator new[] 와 마찬가지로 메모리 할당과 해체를 해 주는 객체이다 2. 하지만 그 사용 방법이 전혀 다르다 3. 할당자에서 정의된 메모리의 모델의 포인터와 참조자에 typedef를 제공해야 한다. 4. 같은 타입의 할당자 객체는 동등하고, 상등 비교를 수행 한다. (같은 타입의 할당자는 똑같다는 말로 해석 됨) 5. 할당자는 상태를 갖지 않는다. (비정적(non-static) 데이터 멤버를 전혀 가지지 않는다.) 5번 사항으로 인하여, STL은 두 개의..
최근댓글