정진하는중
썸네일 이미지

[Windows] 유니코드와 인코딩

1. 유니코드 (Unicode) 윈도우 운영체제는 다양한 국가의 언어를 지원하기 위해서 유니코드 문자를 지원합니다.또한 인코딩 방식으로 UTF-16 방식을 이용합니다. https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C 유니코드 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 유니의 음반에 대해서는 U;Nee Code 문서를 참고하십시오. 유니코드(영어: Unicode, 정식 명칭 The Unicode Standard)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현ko.wikipedia.org  2. UTF(Unicode Transformation Formant) 문자 집합(문자셋)을 컴퓨터가 처리할 수 있는 이진..
썸네일 이미지

[MSVC] switch-case optimization

해당 내용은 Visual Studio의 msvc 컴파일러를 기준으로 작성한 글입니다.( 본인이 사용하는 컴파일러가 해당 최적화를 진행하는 것은 컴파일러 문서를 참조하세요. )  1. 점프 테이블 swtich-case의 어셈블리 코드가 만들어 질 때, 컴파일러는 효율성을 높이기 위해, 여러 조건문을 비교하는 어셈블리를 대신하여 점프 테이블을 만들어서 활용합니다.이를 통해 Swtich-case 문의 분기를 상수 시간 복잡도로 분기할 수 있습니다.( 이는 case 값을 정렬하여 작성하였을 때를 기준으로 합니다. 예시를 들어 Case 1, Case 2, Case 3 ... )  using namespace std;int main(){ int val = 0; std::cin >> val; switch(val) ..
썸네일 이미지

[C++] new [], delete []

1. 서론new, delete가 malloc, free와 다른 점은 메모리 할당시 클래스의 객체를 타입으로 넘길 때,생성자와 소멸자를 호출시키는 점을 알고 있습니다. 기본 타입을 제공할 시, 메모리 할당만 받아 그 주소를 주고받는 과정은 같습니다. 그러나 new [], delete []는 내부적인 동작 과정이 다르기 때문에, 반드시 짝을 맞춰서 사용해야 합니다.또한 delete [] 를 통해 소멸자를 어떻게 호출하는지 알 수 있습니다. 그 이유와 과정을 동작 과정을 살피면서 알아보겠습니다. 2. new[], delete [] 동작 과정 이러한 코드가 있을 때, 클래스 객체를 new [] 를 통해 동적 할당을 진행할 시 class Test{public: Test() { std::cout  malloc, 단..
썸네일 이미지

[Windows] 가상 메모리와 물리 메모리

1. 페이징 페이징 기법(paging)은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다 즉 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.- 위키 피디아- 가상기억장치는 가상 메모리를 뜻합니다. 이 가상 메모리는 RAM과 하드 디스크와 같은 2차 기억 장치를 모두 포함한메모리 개념입니다. 페이지 가상 메모리를 일정한 크기로 나눈 블록 프레임물리 메모리를 일정한 크기로 나눈 블록   위의 사진을 통해 페이지 테이블은 가상 주소 공간의 메모리와 물리적인 메모리를Mappi..
썸네일 이미지

[Windows] 윈도우의 메모리 구조

1. 프로세스의 가상 주소 공간모든 프로세스는 자신만의 가상 주소 공간을 가질 수 있습니다.이는 가상 메모리를 활용하여 각 프로세스가 서로의 메모리 영역에 영향을 주지 않고 독립적으로 실행될 수 있게 합니다. 가상 주소 공간은 프로세스마다 고유하며, 이를 통해 메모리 보호와 격리를 구현할 수 있습니다. 32비트 운영체제에서는 4GB(기가 바이트) 메모리 공간을 가질 수 있습니다. 2 ^ 32  = 4,294,967,296 1GB    = 1,073,741,82464비트 운영체제에서는 16EB(엑사 바이트) 메모리 공간을 가질 수 있습니다.2 ^ 64  = 18,446,744,073,709,551,6160부터 2 ^ 64 만큼의 주소 공간을 사용할 수 있다는 말이겠죠.  이는 프로세스 별로 가질 수 있는 ..
썸네일 이미지

[연산자 오버로딩] 연산자 오버로딩과 반환 값

연산자 오버로딩을 진행하다 보면, 반환 값에 대해 고민하는 순간들이 있었습니다.이에 헷갈리고, 기억이 애매할 때 돌아보기 위해 메모를 작성합니다. 연산자 오버로딩연산자 오버로딩은 C++에서 제공하는 기본 타입이 아닌 클래스 타입, 즉 사용자 정의 타입에도 연산자를 사용할 수 있게 하는 문법입니다.- 뇌를 자극하는 C++ STL -     1. 멤버 함수로 연산자 오버로딩클래스의 멤버 함수로 연산자를 오버로딩 할 경우에는 해당 클래스의 객체를 통해 호출합니다. 샘플 클래스를 예시로 설명하고 반환 값에 대한 정보를 정리하겠습니다.class Sample{private: int value;public: Sample(int n) : value(n) { } };  1-1 단항 연산자단항 연산자는 하나의 피연산자를 ..

[상속] 접근 지정자와 상속 접근 지정자

접근 지정자접근 지정자는 클래스 내부의 멤버(변수와 메서드)에 대한 접근 권한을 설정할 수 있습니다. public특징 : public 접근 지정자로 선언된 멤버는 클래스 외부에서도 접근할 수 있습니다.클래스 내부의 함수에서도 public 멤버에 접근 가능하며 생성된 객체를 통해 외부에서도 멤버에 접근할 수 있다.protected특징 : 객체를 통해 클래스 외부에서 직접 접근은 불가능하며, 상속받은 클래스 내에서는 접근할 수 있습니다.A 클래스의 proteced 멤버를, A 클래스를 상속한 B 클래스의 멤버 함수에서도 접근할 수 있다.private특징 : 오직 해당 클래스 내에서만 접근할 수 있으며 상속받은 클래스에도 접근할 수 없습니다.생성자를 private에 두면 해당 객체의 생성 또한 막을 수 있다...
썸네일 이미지

[복사 생략] 이동 생성자와 이동 대입 연산자

모두의 코드를 보고 정리한 메모입니다. 참조하시면 큰 도움이 될 것입니다.https://modoocode.com/227" data-og-description="모두의 코드 씹어먹는 C++ - 작성일 : 2018-03-24 이 글은 74104 번 읽혔습니다. 이번 강좌에서는 복사 생략 (Copy elision)우측값 레퍼런스 (rvalue referen ce)이동 생성" data-og-host="modoocode.com" data-og-source-url="https://modoocode.com/227" data-og-url="https://modoocode.com/227" data-og-image="https://scrap.kakaocdn.net/dn/A94TR/hyWgZYRxV2/CHsNoy5A6zu..