IT

    [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(&)와 모양은 같지만, 주소 연산자는 단항 연산자이고..

    [자료구조] 덱 (Deque)

    덱 (Deque) 덱? 덱(Deque)이란 Double-Ended Queue의 줄임말이다. 즉, 앞쪽 front와 뒤쪽 rear에서 모두 삽입과 삭제가 가능한 큐를 의미한다. 덱 ADT 객체 전단과 후단 양쪽에서의 삽입과 삭제를 허용하는 동일한 자료형의 요소들의 모음 연산 addFront(x) : 요소 x를 덱의 맨 앞에 추가 addRear(x) : 요소 x를 덱의 맨 뒤에 추가 deleteFront() : 큐의 맨 앞의 요소를 삭제하고 반환 deleteRear() : 큐의 맨 뒤의 요소를 삭제하고 반환 getFront() : 큐의 맨 앞의 요소를 삭제하지 않고 반환 getRear() : 큐의 맨 뒤의 요소를 삭제하지 않고 반환 isEmpty() : 큐가 비어있으면 true 아니면 false 반환 isF..

    [자료구조] 큐 (Queue) - 피보나치 수열 계산, BFS

    1. 큐 (Queue) 1.1 큐? 큐(Queue)란 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 놀이동산의 놀이기구를 타기 위해 줄을 서있는 모습을 생각하면 이해하기 편할 것이다. 1.2 큐 ADT 객체 FIFO 접근방법을 유지하는 동일한 자료형의 요소들의 모음 연산 enqueue(x) : 요소 x를 큐의 맨 뒤에 추가 dequeue() : 큐의 맨 앞의 요소를 삭제하고 반환 peek() : 큐의 맨 앞의 요소를 삭제하지 않고 반환 isEmpty() : 큐가 비어있으면 true 아니면 false 반환 isFull() : 큐가 가득 차 있으면 true 아니면 false 반환 size() : 큐 내의 모든 요소 개수를 반환 display() : 큐 ..

    [자료구조] 스택 (Stack) - 괄호검사, 수식계산, DFS

    1. 스택 (Stack) 1.1 스택이란? 스택(Stack)이란 데이터의 삽입과 삭제를 한 쪽(top)에서만 할 수 있는 LIFO(Last In First Out) 형식의 자료구조이다. LIFO(Last In First Out)란 후입선출 방식이라고 하며, 가장 최근에 들어온 데이터가 가장 먼저 나가는 것을 의미한다. 1.2 스택 ADT 객체 LIFO 접근방법을 유지하는 동일한 자료형의 요소들의 모음 연산 push(x) : 요소 x를 스택의 맨 위에 추가 pop() : 스택의 맨 위의 요소를 삭제하고 반환 peek() : 스택의 맨 위의 요소를 삭제하지 않고 반환 isEmpty() : 스택이 비어있으면 true 아니면 false 반환 isFull() : 스택이 가득 차 있으면 true 아니면 false ..