본문 바로가기

전체 글54

Mac OS에서 Window 설치 1. Mac OS의 소프트웨어를 최신으로 업데이트 한다. 2. 윈도우 설치를 위해 부팅용 USB를 만든다. - Windows 7 USB/DVD 다운로드 도구를 마이크로 소프트 스토어에서 다운로드 받는다. - 윈도우의 iso 파일을 Windows 7 USB/DVD 다운로드 도구를 통해 부팅 USB로 만든다. - USB 복사가 에러가 날 경우 백신 프로그램을 종료한다. - 종료가 되지 않을 때는 삭제를 한다. - 그래도 되지 않을 경우 윈도우+R을 눌러 cmd를 친다. - cmd 창에서 diskpart -> list disk를 쳐서 용량을 보고 select disk # (#은 USB 디스크 번호)을 친다. - clean -> create partition primary -> select partition 1.. 2013. 12. 11.
컴파일러의 컴파일과 링크 처리 과정 - 전처리기를 찾아서 값을 다 바꿔놓는다. (전처리 과정) - 헤더 파일들을 다 모아서 포함되어 있는 선언문들을 모은 후, 그 선언문들을 미리 정리해놓는다. (헤더 분석 과정) - 이때, 헤더가 없거나 하면 파일이 없다고 컴파일 에러가 난다. (컴파일 에러) - 코드 분석을 한다. 분석 전에는 이미 헤더 정리가 끝났으므로 분석에 필요한 테이블이 정리되어있다. - 코드 분석 중 알 수 없는 자료형이나 함수가 나타나면 링크 에러가 발생한다. undefined type .... (링크 에러) - 함수 분석 중 뒤에 이상한 문자가 오거나해서 이것이 함수인지, 무엇인지 헷갈릴때 컴파일 에러가 발생한다. (컴파일 에러) - 타입별로 단어 분석이 모두 끝나고 assembly 언어가 모두 준비되면 obj 파일이 생성된.. 2013. 12. 11.
DirectX 내부에서의 텍스쳐 합성 DX 내부에서의 텍스쳐 합성 (신형 Shader 방식) 원리 신형 Shader 방식의 텍스쳐 색상 결정 로직에서는 색상을 결정하는 방법이 5가지있다. 첫번째는 Diffuse Color. 즉, 조명과 라이팅 연산이 되어서 나온 색상을 설정해주는 방법이다. 두번째는 Texture Color. 텍스쳐 자체의 색상을 정해주는 방법이다. 세번째는 --- 다음에 정리 네번째는 Constant라고, 텍스쳐에 강제로 색상을 할당해주는 방법이다. 다섯번째는 Factor라는 이 역시 텍스쳐에 강제로 색상을 할당해주는 방법이다. 텍스쳐 합성시에 Current와 Temp라는 두군데의 레지스트리에 색상을 저장해놓을 수 있다. 기본적으로 Current에 자동 저장되며, 두 이미지를 합성할려고 할 경우, Temp에 하나를 저장해놓.. 2013. 12. 11.
가상함수 테이블의 메모리 구조 - 가상 함수를 하나 이상 포함하는 클래스의 경우 기본 가상함수 테이블이 생성된다. - 이후, 인스턴스 생성시 인스턴스용 가상함수 테이블이 생성된다. - 인스턴스가 여러개 생성시 메모리 절약을 위하여 여러 인스턴스가 동일한 가상함수 테이블을 가르키게 된다. - 이때, 인스턴스에서 오버라이딩된 가상함수가 없으면, 가상함수 테이블은 자동으로 부모클래스의 가상함수 정의를 참조하고, 오버라이딩된 가상함수가 있으면, 재정의된 가상함수 정의를 참조하게된다 - 가상함수 테이블은 런타임시 결합(동적 결합)되므로 시작시에는 같은 함수를 참조하고 있다가, 호출시에 함수의 주소가 동적할당된다. 일반 함수들은 미리 결합이 되는 정적 결합이다. - 가상 함수는 가상 함수의 포인터를 가지고 있어야 되므로 가상함수를 가진 클래스는.. 2013. 12. 11.
함수 오버라이딩(overriding)과 오버로딩(overloading) - C에서는 함수호출시 함수의 이름을 기준으로 호출을 하여 동일한 함수 선언이 불가능 하지만, C++에서는 함수호출시 함수 이름과 매개변수 선언 정보를 기준으로 호출하므로 동일한 이름의 전달 인자가 다른 함수를 만들 수 있다. 이를 함수 오버로딩이라 한다. - 상속관계에 있는 클래스간에 상위 클래스가 정의한 함수와 동일한 이름, 동일한 매개변수 선언을 가진 함수를 하위 클래스에서 재정의 하는 것을 함수 오버라이딩이라 한다. - 오버라이딩을 위해서는 함수에 virtual 키워드를 붙여서 가상 함수로 만들어야한다. - 만일 상속관계에 있는 클래스 사이에서 상위 클래스에 동일한 함수가 있을때, 하위 클래스에서 매개 변수 선언이 틀린 함수를 재정의하면, 재정의가 되지 않고, 오버로딩이 되어 다른 함수로 인정된다. 2013. 12. 11.
virtual - 하나 이상의 가상함수를 가지고 있는 클래스가 있을 경우 컴파일러는 가상함수 테이블을 만든다. - 이 가상함수 테이블은 실제 객체가 참조하고 있는 함수의 포인터를 가지고 있다. - C++에서는 객체의 함수 호출시 객체 자료형에 따른 함수 호출을 하는데, 함수에 virtual 키워드 붙어있을 경우 이 가상함수 테이블을 참조해서 함수를 호출하게 된다. - 즉, virtual 함수는 가상 함수 테이블이라는 함수 포인터 배열을 참조하여 실제 객체가 가르키는 함수를 호출할 수 있게 해준다. - 상속, 오버라이딩으로 대표되는 객체 지향적 프로그래밍의 핵심 키워드이다. 2013. 12. 11.
[STL] vector에서 size(), reserve() 함수의 역할 - size() 함수는 전달된 인자만큼의 요소 갯수를 늘리고 초기화(생성)한다. - reserve() 함수는 전달된 인자가 들어갈 만큼의 메모리를 예약(할당)할 뿐 요소를 추가하지는 않는다. 2013. 12. 11.
복사생성자와 복사 대입 연산자 복사생성자 : 객체 정의시 특정 객체를 매개변수로 사용할 때 호출되는 생성자 예) Widget(const Widget& rhs); - 자기자신의 인스턴스에 대해 대입될 경우 호출된다. - 함수의 인자로 들어갈때 복사되는 과정에서 호출된다. - 함수의 리턴값으로 사용되면서 복사되는 과정에서 호출된다. - 디폴트 복사 생성자가 생성되나 단순히 값에 의한 복사를 함으로 (얕은 복사) 위험한 요소가 있다. - 하여 동적 할당된 메모리를 복사해야 할 경우 사용자 정의 복사 생성자를 정의하여 깊은 복사를 구현해주어야한다. 복사 대입 연산자 : 같은 타입의 다른 객체에 어떤 객체의 값을 복사하는 용도로 쓰이는 함수 예) Widget& operator=(const Widget& rhs); 어떤 객체가 새로이 정의될 때.. 2013. 12. 11.
데이터(data), 스택(stack), 힙(heap) 영역 실행중인 프로그램은 메모리가 할당된다. 이 메모리 공간의 종류는 데이터 영역, 스택 영역, 힙 영역이 있다. 데이터 : 전역변수 (프로그램 시작 후 메모리 공간에 올라가서 종료시까지 존재)를 위한 영역 Static변수 (프로그램 시작과 동시에 메모리 공간에 올라가서 종료시까지 존재)를 위한 영역 스택(Stack)은 지역변수, 매개변수 같은 컴파일 타임에 크기가 결정되는 메모리를 올리는 공간이다. 여기서 컴파일 타임에 크기가 결정된다는 점에 주목하자. 예를 들어 배열을 선언할 경우 int arr[10];이런식의 선언은 컴파일때 40바이트라는 크기가 결정되기 때문에 Stack에 올라간다. int a = 4; 이 경우 int 형 4바이트가 크기로 선언되고, 4라는 값이 들어가는 부분은 런타임시 결정된다. 즉,.. 2013. 12. 11.