Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] 동적 할당 #1 본문
#include <iostream>
using namespace std;
// 메모리 구조 복습
// - 실행할 코드가 저장되는 영역 -> 코드 영역
// - 전역(global)/정적(static) 변수 -> 데이터 영역
// - 지약 변수/매개 변수 -> 스택 영역
// - 동적 할당 -> 힙 영역
// ex)
// - MMORPG 동접 1명-5만명, 몬스터 1마리-500만 마리
// - 몬스터 생성 이벤트 -> 5분 동안 몬스터 10배
// - 스택 영역
// -- 함수가 끝나면 같이 정리되는 불안정한 메모리
// -- 잠시 함수에 매개변수를 넘긴다거나 잠깐 사용하는 용도로는 좋음
// - 메모리 영역
// -- 프로그램이 실행되는 도중에는 무조건 사용되고 있는 영역
// - 힙 영역
// -- 필요할 때만 사용하고, 필요없으면 반납할 수 있는
// -- 스택과는 다르게 우리가 생성 / 소멸 시점을 관리
// 동적 할당과 연관된 함수 / 연산자 : malloc, free, new, delete, new[], delete[]
class Monster
{
public:
int _hp;
int _x;
int _y;
};
int main()
{
// Monster monster[500 * 10000]; // 스택 오버플로우. 전역으로 옮기면 해결되지만 항상 고정된 메모리를 요구하므로 낭비가 심함.
// 유저 영역 [메모장] [LOL] [곰플레이어] 등 일반적인 프로그램
// ---------------------------------------
// 커널 영역 (Windows 등의 핵심 코드)
// 동적 할당 대체적인 움직임
// 유저 영역 ) 운영체제에서 제공하는 API 호출
// 커널 영역 ) 메모리를 할당하여 건네줌
// 유저 영역 ) 받음
// C++에서는 기본적으로 CRT(C런타임 라이브러리)의 [힙 관리자]를 통해 힙 영역 사용
// 단, 정말 원한다면 우리가 직접 API를 통해 힙을 생성하고 관리 할 수 있음 (MMORPG 서버 메모리 풀링)
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
typedef unsigned int size_t;
#endif
size_t
malloc();
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] 동적할당 #3 (0) | 2023.02.08 |
---|---|
[C++] 동적할당 #2 (0) | 2023.02.01 |
[C++] 객체지향 마무리 (0) | 2022.10.06 |
[C++] 연산자 오버로딩 #1 ~ 2 (0) | 2022.10.05 |
[C++] 초기화 리스트 (0) | 2022.10.05 |