C++기초

220322 - 동적 할당(Dynamic Allocation)

2022. 3. 25. 16:45
#include <iostream>
#include <crtdbg.h> //crt debug라는 헤더. 메모리 릭이 발생했는지 확인해주는 헤더

int main()
{
	//아래 코드를 이용해서 메모리 릭을 체크할 수 있다.
	/*단, Ctrl + F5를 이용해서 실행을 하면 릭이 체크가 안된다.
		릭을 체크하고자 한다면 F5(디버그 모드 실행)을 이용해서
		실행하면 릭이 있을 경우 출력창에 릭을 알려준다.*/
	_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
	
	/*
	동적할당 : 메모리를 시작할 때 만들어주는 것이 아닌 필요한 순간에 공간을 만들어주는 기능이다.
	메모리를 내가 원할때 쓰고 제거하는 것이 가능. 효율적으로 쓸 수 있다.

	new와 delete 키워드를 이용해서 동적으로 메모리를 할당하고 동적으로 할당된 메모리를 제거할 수 있다.
	단, 동적할당된 메모리는 delete를 통해서 제거를 안 할 경우 메모리공간을 그대로 계속 차지하고 있게 된다.
	이 상태에서 프로그램이 종료되면 메모리가 할당된 채로 남아있는 현상이 생기는데 이를 메모리 릭 이라고 한다.
	일반적인 할당 때는 프로그램을 종료할 때 알아서 지워지지만 동적 할당은 그렇지 않다.
	이를 개선한 것이 C#과 JAVA. 동적할당을 자동으로 해제해주는 가비지 컬렉터가 존재하기 떄문에 자동으로 할당을 해제한다. 대신 느림.

	new 변수타입; 을 해주면 변수타입의 메모리 크기만큼을 동적으로 할당해주고 생성된 메모리의 '주소'를 반환한다. -> 포인터변수에 저장 가능
	반환된 주소는 반드시 따로 저장을 해 주어야 한다.(포인터랑 항상 세트로 써야함)
	메모리를 제거할 떄 해당 주소를 알아야 제거가 가능하기 떄문이다.
	*/

	int* Number = new int;
	//포인터 변수는 단순히 동적할당을 한 공간의 메모리 주소를 담고 있을 뿐이다.

	int Number1 = 100;
	int* Number2 = &Number1;

	//메모리 주소를 알아야 제거가 가능하다.
	delete Number;

	//int타입 100개만큼을 만들고 그 시작점을 포인터 변수에 담는다.
	int* Array = new int[100];
	Array[1] = 300;
	delete[] Array;


	
	return 0;
}

'C++기초' 카테고리의 다른 글

220323(2) - 구조체(Structure)  (0) 2022.03.25
220323(1) - 지난번에 만들었던 야구게임 함수로 정리하기.  (0) 2022.03.25
220322 - 포인터(Pointer)_2  (0) 2022.03.25
220321(2) - 포인터(Pointer)  (0) 2022.03.25
220318 - 빙고 게임 만들기  (0) 2022.03.25
'C++기초' 카테고리의 다른 글
  • 220323(2) - 구조체(Structure)
  • 220323(1) - 지난번에 만들었던 야구게임 함수로 정리하기.
  • 220322 - 포인터(Pointer)_2
  • 220321(2) - 포인터(Pointer)
hyrule
hyrule
hyrule
C++ 프로그래밍 공부
hyrule
전체
오늘
어제
  • 분류 전체보기 (205)
    • C++기초 (50)
    • WIN32API FrameWork (109)
      • 한단계씩 직접 구현 (82)
      • 원본 (15)
      • 코드별 설명 개별저장(검색용) (12)
    • 자습 (21)
    • C++ TIPS (11)
    • 연습 노트 (3)
    • ETC (6)
    • DX2D StarCraft 모작 (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 스타크래프트
  • Windows 11
  • notion
  • Tistory
  • C++
  • hello

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyrule
220322 - 동적 할당(Dynamic Allocation)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.