Dart 기본1

nouveau·2023년 12월 3일
0

메모리 구조

Code 영역

  • 소스코드가 저장되는 영역
  • 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 지정됨

Data 영역

  • 전역 변수와 static 변수가 할당되는 영역
  • main함수 전에 선언되어 프로그램의 시작과 동시에 할당되고 프로그램이 종료 할 때 메모리에서 소멸됨

Heap 영역

  • 힙은 동적으로 할당된 메모리를 저장하는 곳
  • 'new' 키워드로 생성하거나 생성자를 통해 힙에 객체를 할당
  • 선입선출(FIFO) 구조

Stack 영역

  • 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역
  • 함수 호출이 완료되면 저장된 메모리도 해제 됨
  • 후입선출(LIFO) 구조

final & const

const int maxHP = 50;

final int maxMP = 10;
  • final과 const는 모두 한번 설정 한 값을 변경 할 수 없도록 하기 위해 선언 한다.
  • const는 컴파일 단계에서 정의되며, final은 런타임 단계에서 정의 된다.

Named Parameter

class Character {
  static const int maxHP = 50;
  static const int maxMP = 10;

  String name;
  int hp;
  int mp;

  Character(this.name, {this.hp = maxHP, this.mp = maxMP});
}

main() {
  Character character = Character("짐만보", hp: 40, mp: 5);
}

함수를 정의 할 때, 매개변수에 이름을 부여하도록 하는 것을 말한다.
Named Parameter를 정의 하기 위해선 {}를 사용한다.
Named Parameter에는 기본값을 지정할 수 있으며, 기본값을 지정하지 않으면 필수적으로 전달되어야 합니다.

static

static 키워드는 변수나 메소드에 사용되며 static 키워드를 사용하면 클래스가 메모리에 로딩될 때 자동으로 생성이 된다.
즉, static은 instance에 귀속되지 않고 class에 귀속된다. 그래서 객체를 생성하지 않아도 사용이 가능하며 속도가 빠르다.

0개의 댓글