동적 할당과 정적 할당은 프로그램에서 메모리에 데이터를 저장하는 방식이다.
노트 필기
동적 할당은 stack에 직접 저장하는 방식으로 컴파일 단계에서 미리 할당되고 함수나 프로그램이 끝나면 자동으로 소멸하여 누수가 생기지 않는다. 하지만 메모리의 크기가 내가 저장하려는 값과 상관없이 고정되어 있기 때문에 메모리가 낭비되거나 큰 값을 저장 할 수 없기에 효율적이지 못하다.
사용법
int a = 10;//stack위치에 값 할당 int b = 10;
정적 할당처럼 직접 저장하는 것이 아닌 값 자체는 Heap에 저장되고 stack에는 Heap에 저장된 값의 주소를 저장하는 방식이다. 동적 할당과는 달리 실행단계에서 할당되고 자동 할당이 아니라 프로그래머가 직접 할당하고 삭제하는 방식이어서 자신이 원하는 값을 넣는 식으로 메모리를 훨씬 효율적으로 사용 가능하지만 제대로 관리하지 못하면 메모리 누수의 문제가 있다.
사용법
int c = new int 10; // new연산자를 사용하여 할당하고 delete연산자로 지워야 한다.
정적 할당과 동적 할당 둘 다 각자의 장단점이 있는 방식으로 한가지만 쓰이기보다는 서로가 다른 목적을 위해 사용된다.C#에서 정적 할당은 구조체에 쓰이며 값형식으로 적은 기능이 있는 함수와 데이터를 저장하기 위해 사용하고 동적 할당은 클래스에 쓰이며 어떠한 것을 처리하기 위한 기능을 저장하기 위해 사용된다.