1 ) 메모리가 충분하지 않을 경우 표준 형태의 new들이 오류를 보고하는 두 가지 주된 방식들을 설명하라. 표준형태 하나는 std::bad_alloc 예외를 던지는 방법과, 예외를 던지지 않고, NULL을 리턴하는 방법, 이렇게 두가지가 있다. 2 ) 예외를 던지지 않는 nothrow 형태의 new가 좀더 예외에 안전한 코드를 작성하는 데 도움이 될까? 근거와 함께 답하라. 나는 도움이 된다고 생각한다. 왜냐하면, NULL 을 반환하게 되었을 때, 처리하지 않고, 지나가면 되기 때문이다. 하지만 이 근거를 곰곰히 생각해 보면, 필요한 메모리를 잡는게 오류가 났는데, 어떻게 정상적으로 프로그램이 구동 될 수 있겠냐는 오류를 범한 것이다. 이 NULL 이 반환하게 되었을 때, 곰곰히 생각해 보면, 나는 할..
EC++S 검색 결과
이번 항목은 메모리를 잡기 위해서 어떤 비용을 내고, 얼마나 잡히는지 생각해 보는 계기가 될 수 있을 것이라 생각하게 해 주는 항목이다. 1 ) new나 malloc으로 메모리 n 바이트를 잡으려 할 때, n 바이트만 잡힐까? 이 질문의 대답은 "적어도 n 바이트" 이상 잡힐 수 있다로 말 할 수 있다. 왜냐하면 "관리를 위한 기록", "조각(chunck)크기에 따른 여백" 때문이다. 관리를 위한 기록은 무엇인가? 범용 메모리 관리자를 이용하여, 메모리를 잡게 되면, 얼마나 잡혔는지 기록하는데, 이 기록은 나중에 해제하고자 할 때, 얼마나 해제 할지 결정하기 위해서이다. 일반적으로 최상위 메모리 번지에 기록해 둔다. 조각(chunk)크기에 의한 여백은 무엇인가? 고정 크기로 잡기 때문에, 고정 크기보다 ..
이번 항목에선 여러 수준의 메모리 관리 개념과, 중요성을 프로그래머에게 알려 준다. 1 ) 메모리 관리자 또는 메모리 할당자는 무엇이며, 그 기본 기능은 무엇인가? C++의 주된 동적 메모리 관리 전략 두가지를 간략히 서술하라. 메모리 관리자(memory manager) 또는 메모리 할당자(memory allocator)는 무엇인가? 말 그대로, 메모리를 관리해 주거나, 할당해 주는 녀석이다. 이 녀석들의 기본 기능은 무엇인가? 메모리를 얻어와 주거나, 메모리를 없애 준다. 경우에 따라선 쓰지 않으면 없애주기도 한다. C++의 주된 동적 메모리 관리 전략 두가지는 무엇인가? 범용 할당(general-purpose allocation) : 요청된 크기 만큼 메모리를 할당하는 전략, 매우 범용 적으로 사용 ..
이번 항목은 제네릭 프로그래밍에 있어, 템플릿의 사용은 이렇게 해 주어야 한다 는 것을 말하는 항목이다.바로 질문 넘어가서, 파악해 보도록 하자. 질문 1. "C++ 템플릿은 컴파일 시점 다형성을 제공한다"라는 문장을 설명하라. .. 런타임 다형성을 안다면, 컴파일 다형성을 이해하기 쉬울 것이다. 런타임 다형성은 상속과 "virtual" 을 이용해, 런타임 중 객체가 상속 상태에 따라 다양하게 .. 말이 어렵잖아. 코드로 봐 보자. #include class Base { public: virtual void Draw() const { std::cout
이번 항목은 표준 라이브러리를 비판하기 위해서 있는 항목 같기도 하다. 비판의 방향은 "표준이 표준이 아닐 수 있는 것은 표준 라이브러리의 구현을 엄격히 정해 두지 않아서 이다" 로 잡고 이야기 하겠다. 이 이야기의 대표로 함수 std::mem_fun 를 들어 본다. 1. std::mem_fun은 무엇인가? 어떨 때 사용 하는가? 사례를 제시하라. 쉽게 말해서 멤버 함수를 함수 객체로 만들어 주는 binder 이고, ... 알고리즘에 쓸 때 많이 쓰인다. .. 링크로 대체 한다. http://groups.google.com/group/han.comp.lang.c++/msg/f74a487c6b6cdf64 http://yesarang.tistory.com/101 2. 다음 코드의 주석으로 생략된 부분에 올바..
항목 2에서 "메모리를 직접 제어하여, 사용할 때는, 범위 안전성을 제공하는 함수만을 사용해야 한다"는 교훈을 얻을 수 있었다. 이번 항목에서는 문자열 포매팅에 있어서, 그 대안들을 논쟁해 본다. 질문 1. 다음의 sprintf 대안들의 장단점을, 이전의 항목 2에서 나왔던 분석과 예제코드를 이용해서 비교, 대조하라. ⓐ snprintf sprintf 와 가장 근접한것이 snprintf 일 것이다. snprintf 는 출력 버퍼의 크기를 지정함으로써, 범위를 지정해 안전성을 확보한 함수인 것이다. sprintf 의 단점을 너무나 잘 알았던 컴파일러 제공사들은 비표준으로 이런 함수를 제공하고 있었다. 그러다 C99에서부터 공식적으로 표준 함수가 되었다. 가장 위험한것은 고쳤지만, 형식에 대한 안전성을 고치..
최근댓글