C++/자료

C++/자료

C++ 스택프레임

스택 프레임(stack frame) 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수 등이 저장됩니다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다. 이러한 스택 프레임 덕분에 함수의 호출이 모두 끝난 뒤에, 해당 함수가 호출되기 이전 상태로 되돌아갈 수 있습니다. 스택 프레임의 동작 방식 예제 int main(void) { func1(); // func1() 호출 return 0; } void func1() ..

C++/자료

C++ 정적바인딩 동적바인딩

1. 바인딩(Binding)이란? 프로그램 소스에 쓰인 각종 내부 요소, 이름 식별자들에 대해 값 또는 속성을 확정한 과정을 바인딩이라고 한다. 2. 정적 바인딩(Static Binding)이란? 바인딩의 정의에서 보는 바와 같이 바인딩 과정이 컴파일 시점에 이루어지는 바인딩을 정적 바인딩이라고 한다. 아래의 예제 소스는 int라는 타입을 갖고, a라는 이름의 변수명으로 선언이 되어 있다. 이처럼 소스상에 명시적으로 타입과, 그 타입의 변수명을 선언하는 것을 정적 바인딩(Static binding)이라고 한다. int main() { int a = 0; }​ 1) 장점 (1) 컴파일시 타입에 대한 정보가 결정되기 때문에 속도가 빠르다. (2) 타입 에러로 인한 문제를 조기에 발전할수 있어서 안정적이다. ..

C++/자료

C++ 메모리 정적 할당 vs 동적 할당 (Stack vs Heap)

Memory 영역 (Stack vs Heap) 컴퓨터에서 메모리 영역은 아래와 같이 나뉘어있다. Code : 실행한 프로그램의 코드가 저장됨 Data : 전역변수와 static변수가 저장되며 프로그램 종료 시까지 사라지지 않고 남아있음 Heap : 동적으로 할당된 메모리영역이며 프로그래머에 의해 할당( C++ : new, C : malloc ) 및 해제( C++ : delete, C : free )됨 Stack : 지역변수와 매개변수가 할당되고 함수를 빠져나가면 자동 소멸됨 정적 메모리 할당 vs 동적 메모리 할당 프로그래밍 관점에서 메모리 영역에는 크게 stack과 heap 메모리 공간이 있다. 정적으로 메모리를 할당하면 컴파일 시 stack 영역에 할당되며, 함수를 빠져나갈 때 소멸된다. 프로그램 컴..

C++/자료

C++ region 키워드

Visual Studio, MSVC 에서만 테스트되었고, 일단 비표준이다. 회사에 새로 오신분께서 내가 보기엔 정말 괜찮은 정리 규칙을 정해주셔서, 써두고 추후 내 입맛에 맞게 더 발전시켜 보려한다. 핵심은 region 키워드인데, 함수와 변수를 카테고리처럼 나누고, public, protected, private으로 정리하는 것이다. 예를 들면 아래와 같다. #pragma region Attack public: bool CanAttack(); protected: bool DoLineTrace(); private: int32 AttackCount(); public: bool bIsAttackMatched; protected: int32 CurrentBullet; private: bool bProjecti..

C++/자료

C++ 전처리기 (preprocesser)

전처리기 (preprocesser) 전처리기(preprocessor)는 프로그램을 컴파일할 때 컴파일 직전에 실행되는 별도의 프로그램이다. 전처리기가 실행되면 각 코드 파일에서 지시자(directives)를 찾는다. 지시자(directives)는 #으로 시작해서 줄 바꿈으로 끝나는 코드다. 전처리기는 컴파일러가 실행되기 직전에 단순히 텍스트를 조작하는 치환 역할을 하기도 하고, 디버깅에도 도움을 주며 헤더 파일의 중복 포함도 방지해주는 기능을 가진다. Include 이전 포스트들에서 #include 지시자를 보았다. #include 를 하면 전처리기(prerocesser)는 포함(include)된 파일의 내용을 지시자의 위치에 복사한다. [전방 선언(forward declaration) 에 사용했었다.]..

C++/자료

C++ 여러 가지 변수 초기화 방법 (variable initialization)

여러 가지 변수 초기화 방법 (variable initialization) 변수가 정의될 때, 즉시 해당 변수에 값을 지정할 수 있다. 이를 변수 초기화(variable initialization) 또는 짧게 초기화(initialization)라고 한다. C++은 변수를 초기화하는 세 가지 기본적인 방법을 지원한다. 첫째, 대입 연산자(=)를 사용한 복사 초기화(copy initialization) int nValue = 5; // copy initialization 둘째, 괄호()를 사용한 직접 초기화(direct initialization) int nValue(5); // direct initialization 직접 초기화는 함수 호출과 매우 유사하지만, 컴파일러는 어떤 이름이 변수이고 어떤 이름이 ..

mane
'C++/자료' 카테고리의 글 목록