목록개인 (12)
응애맘마조
코드를 작성하게 되면 각각 용도와 특성이 드러나게 됩니다. 어떤 부분을 구현할 것인지 어떤 부분을 담당하는지 설정하게 됩니다. 그렇게 되면 파일이 나눠질 수밖에 없는데 파일을 나눠서 컴파일하게 되면 중괄호 안에 있는 부분만 체크하게 되므로 실행시키지 못하고 오류가 나게 됩니다. 그럴 때 사용하게 되는 것이 extern입니다. 임시로 사용할 extern.cpp와 출력을 담당할 Main.cpp를 만들었습니다. extern.cpp에서 변수를 선언하고 Main.cpp에서 extern을 사용해서 num 변수의 값을 가져옵니다. 그렇게 하고 실행을 시키면 extern.cpp에서 저장한 값이 출력됩니다. extern은 외부에 있는 파일을 참조할 때 사용하게 되며 따로 파일의 위치나 경로를 작성할 필요는 없습니다. 또..
static이란 정적 변수를 의미합니다. static으로 선언한 변수는 지역변수와 전역변수 두 가지의 특징을 가지게 됩니다. static 지역변수 num1을 static으로 하고 num2를 지역변수로 선언했습니다. 실행결과 static으로 선언한 num1은 지역변수로 선언되었음에도 불구하고 전역변수처럼 출력이 되었습니다. 이를 통해서 static은 먼저 전역변수의 특징과 같고 0으로 초기화가 되며, 프로그램 시작과 동시에 할당 및 초기화가 되어서 종료될 때까지 남아있습니다. 단, 접근 범위는 Function() 함수 안에서만 가능하고 중괄호를 빠져나가게 되면 소멸합니다. 사용되는 이유는 전역변수는 함수 내 어디든 접근이 가능하지만 static은 전역변수보다 안정적이며 함수 접근 범위를 한 개로 제한하기 ..
지역변수와 동적할당은 밑에 걸어둔 링크에서 확인해 주시면 됩니다. 지역변수 : https://keisukeaso.tistory.com/119 동적할당 : https://keisukeaso.tistory.com/121 앞의 게시글대로 변수에 대해서는 작성을 해봤습니다. 하지만 변수마다 메모리에 할당하는 위치가 다르게 되어있습니다. 특히 이번에는 지역변수와 동적 할당의 메모리 위치가 왜 다른지 설명해 보겠습니다. 먼저 스택과 힙에 대해서 설명하겠습니다. 스택은 컴파일하면서 메모리의 크기가 결정됩니다. 그렇기 때문에 동적으로 할당과 해제가 불가능합니다. 함수의 실행과 종료에 따라 할당이 되고 해제가 됩니다. 명확하게 정해져 있는 메모리 공간만큼 사용합니다. 힙은 프로그래머가 할당하고 해제를 하기 때문에 런타임..
프로그램을 실행하게 되면 메모리의 공간이 운영체제에 의해 미리 마련이 됩니다. 그래서 이 공간 내에 변수나 데이터 값, 또는 문자열이 선언됩니다. 메모리의 구성은 네 개의 영역으로 구분되고 다음과 같습니다. 구분되는 이유는 비슷한 데이터끼리 묶어서 저장을 하면 관리가 편하고 메모리의 접근 속도가 빨라지기 때문입니다. 코드 영역(Code Area) 실행할 프로그램의 코드가 입력되는 영역입니다. CPU가 이 영역에 접근해서 저장된 명령문을 하나씩 가져가서 실행을 합니다. (Visual Studio에서는 행에 F9를 누르고 실행을 하면 한 줄씩 실행하는데 이와 비슷하게 볼 수 있습니다.) 데이터 영역(Data Area) 전역변수와 static으로 선언되는 변수들이 할당됩니다. 이 영역의 변수들은 프로그램 시작..
앞의 게시글의 지역변수, 전역변수는 메모리에 할당을 하고 함수를 빠져나갔을 때나 프로그램이 종료되었을 때 메모리가 해제되었습니다. 이번에 설명할 동적 할당은 다릅니다. 동적할당은 크기가 어느 정도인지 알기 어려울 때나 클 때 사용하고 (이미지 파일 등에 사용합니다.) 힙 영역에 저장이 됩니다. 사용 예시는 다음과 같습니다. 포인터로 변수 이름을 선언해 주고 new를 사용하여 할당해 줍니다. 동적 할당은 프로그래머가 필요할 때 메모리를 할당하고 해제할 수 있도록 해줍니다. 하지만 동적 할당은 프로그래머가 명시적으로 해제를 해줘야 하기 때문에 이렇게만 코드를 작성한다면 프로그램을 종료해도 메모리는 계속 할당이 되어 불필요한 메모리를 사용하게 됩니다. 해제하는 방법은 다음과 같습니다. 동적할당 된 변수 밑에 ..