본문 바로가기

Development/C & C++3

C++0x - rvalue reference <- 위키백과 내용을 번역. 임시값(보통 rvalue라고 불리는 수식의 우측에 오는 값)는 절대 변경이 불가능한 것이었다(C에서 처럼, 그리고 const T& 타입과 분간할 수 없는 것처럼 여겨졌다). 그러나, 임시 값은 몇몇 상황에서는 변경이 가능했고, 심지어 유용한 허점처럼 여겨졌다(Alexandrescu "C++ coding standards" #15를 참고하라). C++0x는 rvalue 참조라 불리며 T&&로 식별되는 새로운 비-상수형 참조 타입을 추가했다. 이 것은 초기화 된 이후에 변경이 가능한 임시값들을 참조 하며, 이는 move문을 사용하기 위한 것이다. 이전 표준에서의 만성적인 성능 문제는, 객체가 값에 의한 전달이 될 때 생기는 암시적으로 발생하는 비용상 불필요한 깊은 복사 때문이었다. 이 문제에 대해 설명하기 .. 2011. 7. 9.
DLL # 정적 라이브러리(Static Library) => 정적 라이브러리로 설정된 프로젝트의 결과물은 .Lib파일로, 이 파일 내부에는 순수 코드만 들어 있다. 만약 한글 출력 관련 정적 라이브러리를 만들었다면(Han.Lib파일이 그 결과물이라 치자), 라이브러리 파일과 클라이언트 측에서 함수를 호출 하기 위해 헤더파일을 프로젝트에 포함 시키고 빌드하게 되면, .Lib파일 내용이 목적코드에 복사가 되어 실행파일이 나온다. 따라서, 빌드를 위해 포함 시켰던 두 파일은 실행 파일에서는 필요가 없게 된다(stand alone). # 동적 라이브러리(Dynamic Library) 개요=> .dll파일의 장점으로, 1. 모듈화가 되므로 유지 보수가 쉽고(디버깅이 쉬움) 분담 작업이 가능하다. 2. 모듈들을 분리해서 .. 2011. 5. 9.
Memory in Windows system y# Win16의 메모리 구조 80286프로세서에서는 최대 16MB까지의 메모리를 지원 하였으나 하위 호환성을 위해 1MB까지 밖에 보통을 사용하지 않았다. 1MB를 액세스 하기 위해서는 20bit의 주소 영역이 필요 하였으므로 평면적인 메모리 구조로는 접근이 불가했다. 따라서 이를 위해 세그먼트/오프셋 구조를 사용했으며, 모든 프로그램이 같은 주소 공간에서 실행되어 응용프로그램들 사이는 물론 시스템 영역까지도 침범이 가능했다. # 4GB 평면 메모리 모델 16비트 환경의 부족한 메모리와 구조적인 문제를 근본적으로 해결한 CPU는 80386이다(이후는 그냥 처리속도만 증가함). 80386CPU가 관리할 수 있는 메모리는 최대 4GB(2의 32승)의 주소공간을 지원한다(주소공간은 프로세스가 가지는 가상의 .. 2011. 5. 9.