IT/Programming

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

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

    [C++] 포인터 한방에 이해하기 (Call by Value vs Call by Reference)

    포인터 (Pointer) 포인터 변수 포인터란 "어떤 것을 가리키는 것"을 의미한다. C나 C++ 등의 프로그래밍 언어에서 포인터는 "주소를 가리키는 것"을 뜻하며, 이러한 것을 저장하는 변수를 포인터 변수라고 한다. 프로그래밍에서 포인터가 악명이 높기로 유명하지만, 의외로 단순하니 겁먹을 필요가 없다. 아래 코드를 보자. int a = 10; int* p = &a; a라는 int형 변수를 선언하고 10으로 초기화하였다. p라는 int형 포인터 변수를 선언하고 a의 주소값으로 초기화하였다. 여기서 한가지 짚고 넘어가야 할 것이 있다. & (주소 연산자) 주소 연산자 &를 사용하면 변수에 할당된 메모리 주소를 확인할 수 있다. 참고로 비트 연산자 AND(&)와 모양은 같지만, 주소 연산자는 단항 연산자이고..