공부

20200918 테스트 오답노트

글로벌디노 2020. 9. 18. 16:28

오늘은 테스트를 치뤘다

그리고 틀렸던 부분과 지적받았던 부분에 대해 기록 남긴다

 

 

 

 

1. c++ virtual 함수

2. 함수 내 static 변수는 메모리에 언제 등록이 되는가?

3. volatile 키워드

4. 캐시 히트율

 

 

 

1. c++ virtual 함수

아래 코드의 출력결과는?

#include <stdio.h>
 
class A
{
public:
    virtual void Func() { printf_s("A::Func\n"); }
};
 
class B : public A
{
    void Func() { printf_s("B::Func\n"); }
};
 
class C : public B
{
    void Func() { printf_s("C::Func\n"); }
};
 
 
int main()
{
    C c;
    A* a = &c;
    a->Func();
 
    return 0;
}

출력

C::Func

 

class C 의 void Func() 앞에 아무 키워드도 안 붙어있어서 오버라이딩된 함수가 아닌걸로 착각했다

c#에서 override 키워드로 재정의함수를 표시하던 습관때문에 착각했음 ..

 

 

 

2. 함수 내 static 변수는 메모리에 언제 등록이 되는가?

정답: 프로그램이 시작될 때

 

이것도 착각했음 ..

싱글톤 패턴 사용시 GetInstance() 함수 내에서 static instance 변수 만들던것이 생각이 났다.

그래서 첫 번째 함수 호출시 메모리에 등록된다고 해버렸음 ... 그건 초기화지 !!

이런 실수는 다시는 하면 아니되오!!

 

 

 

3. volatile 키워드가 캐시메모리를 거치지 않고 직접 메인메모리에 접근한다고 체크했다가 혼났다

이 때는 왜 이렇게 체크했나 기억이 안나네 ..;;

캐시메모리를 거치지 않는 방법은 없다고 알고 있어야겠다

혹시나 해서 검색해봤는데 DMA(Direct Memory Access) 라는 것이 있는데.. 어렵다.. 일단 패스 ..

 

 

 

4. 캐시 히트율을 높이는 방법

메모리를 지역적이고 순차적으로 사용한다. 라고 대답한거 같다

그런데 아주 초보적인 대답이라고 한다 .. ㅎㅎ

예시로 배열을 순차적으로 순회하는 것, 퀵정렬이 캐시친화적 정렬방법이라는 것 .. 등등의 예시를 들었지만 ... 더 깊게 공부하세요! 라는 대답을 들었다

반응형

'공부' 카테고리의 다른 글

20201005 월요일 정리  (0) 2020.10.06
IPv4 서브넷 연습  (0) 2020.09.26
20200917 공부  (0) 2020.09.18
20200916 공부  (0) 2020.09.16
Console창 생성 및 출력  (0) 2020.09.15