Programming Language/C++(73)
-
Ch 10. 범위, 공간 - 03. 공간 기억 부류(자동, 정적, 동적)
1. 공간(Storage)공간은 변수가 메모리에 얼마나 오래 살아 있는지, 어디에 저장되는지를 결정하는 것을 분류해둔 것이다.이 공간은 자동 저장공간, 정적 저장공간, 동적 저장공간으로 나눌 수 있다. 2. 자동 저장공간 (Automatic Storage) 자동 저장공간은 함수 호출 시 생성되고 함수가 종료되면 소멸되고 메모리에서는 스택(stack)영역에 저장된다.void func() { int x = 10; // 자동 저장공간에 저장}// 종료될때 x는 자동 저장공간에서 해제됨x는 func()가 호출될 때 스택에 메모리 잡히게 되고 func()가 끝나면 자동으로 스택에서 메모리 해제됨 자동 저장공간은 보이는것 처럼 따로 메모리를 할당하거나 지울 필요가 없으며 보통 일반 지역 변수는 다 자동 저장공..
2025.04.29 -
Ch 10. 범위, 공간 - 02. 범위
범위, 스코프라고 부르는 것은 컴파일 타임에 변수에 접근이 가능한 여부에 대한 것으로 메모리에 할당되고 해제되는것에 대한 영향을 말하는것이 아닌 컴파일타임에 해당 변수에 접근이 가능한지에 대한 내용이다.우리가 자주 사용하고 자주사용하게될 스코프에 대한 내용을 알아보자. 1. 블록 범위(Block Scope)블록 범위는 {} 중괄호 내부에 선언된 것들을 의미하며 이 중괄호 내부에 선언된 것을은 중괄호 내부에서만 접근이 가능해진다.그래서 변수의 주소를 확인해보는 코드를 작성해보면 이렇게 블록 내부에서 접근하는 a의 경우는 블록 외부에서 접근하는 a와는 주소값이 다르고 블록 이전, 이후로도 이 값은 블록 내부 변수의 주소값과는 다르다는것을 볼 수 있다. 이건 할당과 해제와는 다르게 스코프에 의해서 블록 내부의..
2025.04.29 -
C++의 포인터 배열에 대해서
1. 포인터 배열포인터 배열이란 포인터들을 원소로 가지는 배열을 말한다.타입* 배열이름[크기];실 사용 예시는 아래와 같고int* arr[3]; // int* 타입의 요소를 3개 갖는 배열그 형태는int n1 = 10;int * ptr1 = &n1;int n2 = 20;int * ptr2 = &n2;int n3 = 30;int * ptr3 = &n3;int* ptrArr [3] = {ptr1, ptr2, ptr3};--------------------------------------------------- [ ptrArr ] │ │ ▼[ ptrArr[0] ] [ ptrArr[1] ] [ ptrArr[2] ] [ ptr1 ] [ ptr2 ] ..
2025.04.18 -
Ch 10. 범위, 공간 - 01. 빌드
기존엔 ctrl + f5와 같은 단축키로 빌드했었는데 이런 빌드 과정을 수동으로 한번 진행해보고 그 내부의 과정을 파악해보도록 하자. 확인하기 이전에 추가로 메인 함수의 파라미터에 대해서 아래 작성해놓았으니 확인해보도록 하고 내용을 보자 더보기메인함수의 파라미터C++의 main함수는 특별한 파라미터 두개를 받을 수 있다.int main(int argc, char* argv[]) 여기서 각각의 파라미터는 - int argc : argument count의 약자로, 전달 받은 아규먼트의 갯수를 담는다- char* argv[] : argument vector의 약자로, 전달 받은 아규먼트 값들을 배열로 담아온다. 그래서 우리가 사실은 ctrl + f5로 실행한 프로그램은 debug냐 release냐에 따라서 ..
2025.04.18 -
Ch 09. 함수 - 10. inline
이전에 함수를 만들면 해당 내용을 스택에 쌓고 비우는 과정, 추가로 이 함수가 어디로 부터 호출되었는지에 대한 정보를 저장해두는 것과같은 비용들이 발생한다고 했었는데 이런 비용 발생을 하지 않게 하는 방법으로 함수의 inline화라는 것이 있다. 함수의 인라인화inline은 함수를 호출하지 않고, 함수 코드를 호출하는 곳에 복붙해버려라 라고 컴파일러에게 요청하는 키워드로 사용 방법은 함수의 정의 앞에 inline이라는 키워드를 붙여주면 된다.inline int add(int a, int b) { return a + b;}이렇게 inline화 된 함수의 경우는 int main() { int c = add(1, 2);}이렇게 호출되었을때 이 함수로 가서 실행하는 것이 아니라 내부 코드 자체를 가져..
2025.04.18 -
Ch 09. 함수 - 08. 함수 포인터
1. 함수 포인터함수 포인터(function pointer)는 함수의 주소를 저장하는 포인터로 함수도 결국 메모리에 저장되고, 이 함수의 주소를 변수에 담아서 나중에 호출도 가능하다 에서 나온 개념으로 함수도 결국은 메모리 어딘가에 저장된 코드 블록의 시작 주소이고 이 주소를 일반 변수처럼 포인터에 저장하고, 그걸 통해 호출하도록 만들어 주는 기능이라고 보면 된다.int add(int a, int b) { return a + b;}int main() { int result = add(3, 4); // add 함수 호출}우리는 함수를 위와 같이 어딘가에 정의해두고 그 함수명으로 호출문을 작성해서 함수를 호출했었다. 반면 함수 포인터는 int add(int a, int b) { return..
2025.04.18