메모리 풀링 (Memory pooling) 풀링이라는 단어 자체를 외우는 편이 좋다. 풀링은 특정 목적의 객체를 미리 특정 크기 혹은 갯수만큼 미리 생성/할당하고 필요에 따라 사용할 수 있도록 제공하고 사용이 끝나면 회수하여 다시 사용할 수 있도록 대비하는 것이다. (사용과 회수 과정에서는 필요에 따라 초기화 단계가 추가될 수 있다.) 대표적인 예로는 게임을 제작에 최적화를 위해 자주 사용되는 오브젝트 풀링 기법이나 게임 서버에서 자주 사용되는 IOCP가 있다. 목적 메모리 할당 및 해제는 많은 비용이 발생한다. 이는 메모리 단편화(fragmentation) 현상을 초래하여 성능저하에 큰 원인이 되기에 이러한 과정을 최소화할 수 있는 풀링 기법들이 다양한 부분에서 만들어졌다. 메모리풀링 기법들은 미리 만..

스마트 포인터와 일반 포인터 동적 할당 객체는 delete 키워드를 통해 매번 할당 해제를 해야한다. 하지만 C++11부터는 스마트 포인터를 통해 메모리 해제를 자동으로 할 수 있게 된다. 하지만, 모든 포인터를 스마트 포인터로 사용하는 것이 아니기에 일반 포인터가 사용되는 시점과 포인터의 소유권의 위치를 명확히 알아야 할당 해제에 어려움이 없을 것이다. 메모리 소유권 (Memory Ownership) "메모리 소유권"이라는 용어는 일반적으로 프로그래밍에서 메모리 리소스의 소유 및 관리에 관련된 개념을 나타냅니다. 이는 특히 메모리 할당과 해제에 관련된 것이다. int *a, *b; a = new int(5); b = a; cout

동적 할당 동적 할당은 프로그램 실행 중에 메모리를 할당하고 해제하는 것을 말한다. 이는 정적 할당과 대조되는데, 정적 할당은 컴파일 타임에 메모리가 할당되고 해제되는 것을 의미합니다. C/C++는 동적 할당을 주로 malloc, calloc, realloc, free함수나 new, delete 연산자를 사용하여 할당한다. 다른 언어에서도 유사한 메커니즘이 존재한다. [동적할당 방법] 정적 할당 정적 할당은 선언된 변수들의 메모리 크기를 컴파일 시간에 예측하며 사용에 있어 편리하다. 하지만 편리한 만큼 편의성을 제공해주는 기능들이 이미 규칙으로 통제되기 때문에 유연한 사용은 어려운 법이다. 동적 할당 동적 할당은 사용자 = 개발자가 언제, 얼만큼 새로운 값을 메모리에 할당할 것이고 언제 제거할 것인지 지..

계층구조의 개념 "CPU 혼자 모든 것을 다 하기엔 비용이 너무 크니, 각자 용도에 맞게 저장장치들을 함께 효율적으로 사용하자." CPU는 컴퓨터의 속도를 결정하기에 가장 중요한 요소로 선정되기도 한다. 하지만 CPU가 아무리 빠르더라도 기억장치가 느리다면, CPU는 명령어나 데이터를 액세스하는 과정에서 많은 시간을 기다려야한다. 이렇게 속도로 CPU를 따라올 수 없는 보조저장장치들은 거대한 용량과 영구저장 능력이라는 아주 큰 메디트가 있지만 그로인해 대부분 각 장치가 개별 기계장치를 포함하기에 액세스 속도가 CPU에 비해 현저히 떨어진다. 이처럼 기억장치들은 유형에 따라 기능, 속도, 용량, 가격이 천차만별로 차이가 나고 각자 서로 용도가 다르기에 필요에 따라 적절한 시간, 위치에 사용되어야한다. 메모..
- Total
- Today
- Yesterday
- CPU
- 수학
- 크기
- 알고리즘
- 함수
- 상속
- New
- 할당
- 게임수학
- 클래스
- 명령어
- 프로세스
- thread
- 인터럽트
- 백준
- 운영체제
- static_cast
- 스레드
- 메모리
- 레지스터
- const
- c++
- 포인터
- 초기화
- 컴파일
- dynamic_cast
- 입출력
- 멀티스레드
- malloc
- 구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |