TIL_014 (Flow Chart, 실습, 스마트포인터)

김펭귄·2025년 8월 14일

Today What I Learned (TIL)

목록 보기
14/111

Flow Chart

  • SmartDraw 이 사이트를 통해 flow chart 작성

Player Status Management System

Enemy Fight System

자원 관리

지역변수의 수명

  • stack에 존재하는 지역변수의 경우 중괄호{}안에서 생성된 경우 중괄호 나갈 시 메모리 해제됨
for (int i = 0; i < 3; i++) {
	int temp = i;		// 3번 생성과 소멸	
}
  • 따라서 위의 temp는 생성되었다가 사라지는 것을 3번 반복

스마트 포인터

  • newdelete로 할당하고 관리하는 대신 스마트 포인터로 자동으로 관리

unique_ptr

  • 객체에 대한 단일 소유권을 관리

  • 객체의 소유권을 명확히 하고 소유권 이전을 통해 효율적인 자원관리가 가능

  • move 를 통해 소유권을 이동하는 식으로 관리

shared_ptr

  • 레퍼런스 카운트를 관리

  • 레퍼런스 카운트란 현재 객체를 참조하는 포인터의 개수를 카운팅

  • 레퍼런스 카운트가 0이 되면 객체는 자동으로 메모리 해제

  • Dangling Pointer 및 MemoryLeak 문제를 효과적으로 방지

weak_ptr

  • 객체의 소유권을 공유하지 않음

  • 다른 스마트 포인터와 다르게 레퍼런스 카운트를 증가시키지 않는 약한 참조를 함

  • shared_ptr 는 유용하지만 순환참조가 발생 가능

  • 순환 참조란, 두 개 이상의 객체가 서로를 shared_ptr로 가리켜 참조하는 상황. 메모리 누수를 유발할 수 있다.

  • 이 상황에서 서로 순환하고 있는 shared_ptr중 하나를 weak_ptr로 대체하면 순환 고리가 끊어지게 되므로 문제를 해결

profile
반갑습니다

0개의 댓글