목록변수 (3)
응애맘마조
앞의 게시글의 지역변수, 전역변수는 메모리에 할당을 하고 함수를 빠져나갔을 때나 프로그램이 종료되었을 때 메모리가 해제되었습니다. 이번에 설명할 동적 할당은 다릅니다. 동적할당은 크기가 어느 정도인지 알기 어려울 때나 클 때 사용하고 (이미지 파일 등에 사용합니다.) 힙 영역에 저장이 됩니다. 사용 예시는 다음과 같습니다. 포인터로 변수 이름을 선언해 주고 new를 사용하여 할당해 줍니다. 동적 할당은 프로그래머가 필요할 때 메모리를 할당하고 해제할 수 있도록 해줍니다. 하지만 동적 할당은 프로그래머가 명시적으로 해제를 해줘야 하기 때문에 이렇게만 코드를 작성한다면 프로그램을 종료해도 메모리는 계속 할당이 되어 불필요한 메모리를 사용하게 됩니다. 해제하는 방법은 다음과 같습니다. 동적할당 된 변수 밑에 ..
전역변수는 지역변수와는 다르게 중괄호 내에 선언되지 않습니다. 이 변수는 프로그램이 처음 실행되면 메모리 공간에 할당되고 프로그램이 종료될 때까지 남아있는 변수입니다. 그리고 프로그램 전체 영역 어디서든 접근이 가능합니다. 전역변수를 초기화하지 않으면 0으로 초기화됩니다. 지역변수처럼 쓰레기 값이 나오는 것과는 비교되는 특징이 보입니다. 0으로 되는 이유는 초기화되지 않은 전역변수는 데이터 영역에 저장하면 BSS(데이터 영역과 힙 영역 사이)에 저장됩니다. 이 변수들은 BSS에서 0으로 채우는 과정을 거칩니다. (출처) : https://hydroponicglass.tistory.com/182 파일 형식 중에서 .bss가 있습니다. 컴파일러와 링커가 처음에 0 값으로 표현되는 정적으로 할당된 변수를 포함..
지역변수는 지역 내에 있는 변수입니다. 즉, 중괄호 내에 선언되어 있는 모든 변수는 지역변수입니다. 이러한 변수는 그 지역 내에서, 그 중괄호 내에서만 사용되고 중괄호를 벗어나게 되면 소멸합니다. 새롭게 함수가 호출될 때마다 변수는 새롭게 메모리 공간에 할당됩니다. 지역변수는 선언된 지역 내에서만 유효하기 때문에 지역이 다르면 변수의 이름이 같아도 문제가 되지 않습니다. 위의 사진처럼 똑같은 이름의 num을 2개를 사용하였지만 지역이 다르기 때문에 같은 이름을 사용해도 오류가 뜨지 않고 출력이 되는 모습을 볼 수 있습니다. Function이라는 함수를 만들어서 num을 10으로 초기화합니다. 그다음 출력문을 사용해서 콘솔창에 num을 출력하는 명령문을 작성하고 마지막에 return을 해서 함수의 종료를 ..