메모리 풀링 (Memory pooling) 풀링이라는 단어 자체를 외우는 편이 좋다. 풀링은 특정 목적의 객체를 미리 특정 크기 혹은 갯수만큼 미리 생성/할당하고 필요에 따라 사용할 수 있도록 제공하고 사용이 끝나면 회수하여 다시 사용할 수 있도록 대비하는 것이다. (사용과 회수 과정에서는 필요에 따라 초기화 단계가 추가될 수 있다.) 대표적인 예로는 게임을 제작에 최적화를 위해 자주 사용되는 오브젝트 풀링 기법이나 게임 서버에서 자주 사용되는 IOCP가 있다. 목적 메모리 할당 및 해제는 많은 비용이 발생한다. 이는 메모리 단편화(fragmentation) 현상을 초래하여 성능저하에 큰 원인이 되기에 이러한 과정을 최소화할 수 있는 풀링 기법들이 다양한 부분에서 만들어졌다. 메모리풀링 기법들은 미리 만..
정적 멤버 지역 변수는 스코프 안에서 생성되고 스코프가 종료되면 해제된다. 멤버 변수의 경우 클래스 객체(인스턴스)가 생성될 때 메모리에 할당되고 해당 객체가 소멸할 때 같이 제거된다. 이말은 즉슨, 지역 변수나 멤버 변수로는 스코프나 객체 사이에 공용 변수나 공용 함수를 사용하기 위해 고정으로 메모리에 할당되어있는 객체가 필요하다는 말이다. class A { public: int X; void y() {) }; int main() { A a, b; ) 위와 같이 A라는 클래스의 인스턴스 a, b가 존재하면 둘 객체가 가진 x라는 변수는 전혀 다른 메모리에 할당되어있는 완벽히 다른 변수가 된다. 즉, 멤버 변수는 한 객체에 소속되어 각 다른 객체의 변수에 접근이 불가능하다는 것이다. 정적 멤버 메서드 정..

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

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