Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 동적계획법
  • LCA
  • C++
  • 분할정복
  • 트라이
  • 구현
  • 그래프
  • 정수론
  • 세그먼트 트리
  • 수학
  • UC++
  • 우선순위큐
  • 정렬
  • KMP
  • 트리
  • 기하
  • 위상 정렬
  • 조합론
  • 문자열
  • 이분탐색
  • 큐
  • SCC
  • 누적합
  • 유니온 파인드
  • 백준
  • 최소 스패닝 트리
  • 스택
  • 브루트포스
  • 백트래킹
  • 투포인터

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

C++의 기초 - 3
공부 및 정리/C++

C++의 기초 - 3

2022. 7. 12. 18:50

* 제가 보기 편하기 위해 작성하는 메모이므로, 누락된 내용이 있을 수 있습니다.

누락된 내용은 제가 이미 숙지하였기 때문이거나 다른 이유로 누락될 수 있습니다.

* 자동 공간, 정적 공간, 동적 공간

 

- C++은 데이터 저장을 대입 방법에 따라 자동 공간, 정적 공간, 동적 공간으로 구분합니다.

- 각각 실제 메모리 구조에서 스택, 데이터, 힙에 저장됩니다.

 

실제 메모리 구조

 

1. 자동 공간

 

- 함수 안에서 정의 되는 보통의 변수들을 자동 변수라고 합니다.

- 자동 변수들은 블록 안에서만 유효합니다.

 

int main()
{
	int A = 6;
    
    {
    	int B = 7;
    }
    //B 소멸
    
    printf("%d", B); // -> 불가능
	return 0;
}//A 소멸

 

- {}로 묶인 공간을 블록이라고 합니다.

- 자동 공간은 스택 공간에 저장됩니다.

 

2. 정적 공간

 

int A = 5;

int func()
{
	static B = 0;	//정적 변수라 블록이 끝나도 해제되지 않음
    B++;
	A = 0;	//전역 변수라 가능
}

int main()
{
	for(int i = 0; i < 5; i++)
    	func();
	return 0;
}

 

- 정적 공간은 프로그램 실행 도중 계속 존재하는 공간입니다.

- 전역 변수는 함수 외부에 변수를 선언하거나 (전역 변수) static 키워드를 붙여서 만들 수 있습니다.

 

 

3. 동적 공간

 

#include <iostream>
#include <stdlib.h>

int main()
{
	int *A = new int(5);	//동적 할당
    int *B = (int *)malloc(sizeof(int));
    *B = 6;
    
    printf("%d %d", *A, *B);
    
    delete A;
    free(B);
	return 0;
}

 

- 동적 공간은 러닝 타임에 개발자가 할당해서 사용할 수 있는 공간입니다.

- 동적 공간은 힙 영역에 저장됩니다.

- new와 delete, malloc과 free를 통해 동적 할당과 해제가 가능합니다.

- 동적 공간을 사용한 후엔 반드시 해제하여 메모리 누수를 없애도록 합니다.

 

저작자표시 (새창열림)

'공부 및 정리 > C++' 카테고리의 다른 글

C++의 기초 - 6  (0) 2022.12.12
C++의 기초 - 5  (0) 2022.12.12
C++의 기초 - 4  (0) 2022.11.30
C++의 기초 - 2  (0) 2022.06.15
C++의 기초 - 1  (0) 2022.06.12
    '공부 및 정리/C++' 카테고리의 다른 글
    • C++의 기초 - 5
    • C++의 기초 - 4
    • C++의 기초 - 2
    • C++의 기초 - 1
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바