
스택(Stack)과 힙(Heap) 차이점
2021. 3. 1. 22:15
DevLog/C & C++
메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 4가지가 있습니다. 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 코드 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 부릅니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 데이터 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 ..

C++ 포인터 개념
2021. 2. 4. 15:43
DevLog/C & C++
주소값의 이해 데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미합니다. C++에서는 이러한 주소값을 1바이트 크기의 메모리 공간으로 나누어 이해할 수 있습니다. 예를 들어, int형 데이터는 4바이트의 크기를 가지지만, int형 데이터의 주소값은 시작 주소 1바이트만을 가리키게 됩니다. 포인터란? C++에서 포인터(pointer)란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고도 부릅니다. char형 변수가 문자를 저장하고, int형 변수가 정수를 저장하는 것처럼 포인터는 주소값을 저장하는 데 사용됩니다. int n = 100; // 정수형 변수의 선언 int *ptr = &n; // 정수형 변수의 포인터 선언 다음 그림은 위의 예제에서 사용된 변수와 포인터가 메모리에서 어떻게 ..