본문 바로가기

분류 전체보기612

[백준/C++] 10845 큐 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 이번 문제는 자료구조인 queue 에 대한 문제 입니다. 큐의 연산을 그대로 사용하는 문제 이며 string 자료형으로 명령어를 입력 받도록 합니다. 우선 queue를 사용하기위하여 #include 를 헤더에 추가합니다. 큐가 가지고 있는 연산자를 사용해야 합니다. 큐의 연산 pop() : 큐에서 제일 앞의 원소를 제거 합니다. front() : 큐의 제일 앞쪽 원소를 반환 합니다. push() : 큐의 제일 끝쪽에 원소를 추가 합니다. empty.. 2023. 5. 3.
[C, C++] 메모리 풀(Memory Pool) 메모리 풀(Momory Pool)이란? 고정된 크기의 블록을 할당하여 malloc, new 처럼 동적할당을 가능하게 해주는 기능입니다. 기본적으로 C의 동적할당 malloc 이나 C++의 동적할당 new 는 규칙적인크기의 할당이 아니기 떄문에 메모리 단편화를 유발 시키고 파편화된 메모리들은 프로그램의 성능 저하를 유발 합니다. 이를 방지하기 위하여 일정한 크기의 메모리(블록)들을 미리 할당 해 놓고 사용하는 것이 메모리 풀 입니다. 응용 프로그램은 실행 시간에 핸들에 의해서 할당>접근>해제 합니다. 추가적으로 malloc & new 의 동적할당은 할당 및 해제를 실시할 때 마다 운영체제에 요청하는 과정일 발생하는데 이러한 과정또한 줄일 수 있습니다. 메모리 풀 에는 고정 방식과 가변 방식의 두가지 방법이.. 2023. 5. 3.
[C, C++] 허상포인터(Dangling Pointer) + 와일드포인터(Wild Pointer) + 스마트포인터 와일드포인터(Wild Pointer) 란 처음 사용시 초기화를 하지 않았을때 발생합니다. 초기화가 강요되지 않는 모든 포인터는 와일드 포인터로 시작됩니다. 대부분 초기화의 생략 보다는 깜빡하고 초기화하지 않아 발생하는 경우가 많고 컴파일러는 이에 대하여 경고 할 수 있다고 합니다. 허상포인터(Dangling Pointer) 란 동적 할당 된 포인터를 delete 혹은 free 를 사용하여 해제 할 경우 할당되었던 메모리 영역은 해제가 되지만 가리키고 있던 포인터 자체까지 삭제되지는 않습니다. 때문에 목표를 잃은 채로 존재하고 있는 포인터가 즉, 허상 포인터가 됩니다. #include using namespace std; int main() { int* ptr = new int(); *ptr = 5; cout 2023. 5. 3.
[C, C++] 동적 할당, 해제 동적할당 그리고 해제에 대하여 정리 합니다. 우선 기본 개념으로 C 언어에서의 동적할당과 C++ 언어에서의 동적할당은 같지않습니다. 양쪽모두 크게보자면 힙공간에 동적으로 메모리를 할당받아 저장 하는 것 입니다.동적할당을 하고난 후에는 해제를 해줘야합니다. 만일 해제 하지 않을 경우 메모리를 계속 가지고 있기 때문에 메모리 누수가 생길 수 있습니다.메모리 누수가 커질 수록 프로그램에 위험 합니다. C언어 에서의 동적할당 및 해제 C언어 에서는 malloc 으로 할당 하며, free 로 해제 합니다. struct Position { int a; int b; }; int main() { Position* ptr = (Position*)malloc(sizeof(Position)); // 동적 할당 // ... .. 2023. 5. 3.
심화 수업11일차 - 프레임워크2, IMGUI2 보호되어 있는 글 입니다. 2023. 5. 3.
심화 수업10일차 - 프레임워크, IMGUI 보호되어 있는 글 입니다. 2023. 5. 2.