목록메모리 (3)
응애맘마조
주의 : 해당 게시물에서 작성될 내용은 과제를 해결하기 위해 출처의 내용을 그대로 작성한 부분이 많으며 일절 광고나 수익 창출 목적으로 쓰인 것이 아님을 밝힙니다. 동적할당 및 해제에 대해서는 https://keisukeaso.tistory.com/121 게시글을 참고해 주시면 됩니다. 댕글링 포인터는 허상 포인터라고도 하며 유효한 적절한 객체를 가리키고 있지 않은 포인터입니다. 이미 할당이 해제된 메모리를 가리키는 포인터가 댕글링 포인터라고 할 수 있습니다. 따라서 댕글링 포인터가 존재하면 전체적인 프로그래밍 진행에 문제가 될 수 있고 이러한 문제를 해결하기 위해서는 해제가 되었다면 NULL 값으로 초기화해 주는 거나 위에 적은 동적할당으로 해서 매개변수로 받거나 매크로를 사용하는 것이 좋습니다. 매크..
지역변수와 동적할당은 밑에 걸어둔 링크에서 확인해 주시면 됩니다. 지역변수 : https://keisukeaso.tistory.com/119 동적할당 : https://keisukeaso.tistory.com/121 앞의 게시글대로 변수에 대해서는 작성을 해봤습니다. 하지만 변수마다 메모리에 할당하는 위치가 다르게 되어있습니다. 특히 이번에는 지역변수와 동적 할당의 메모리 위치가 왜 다른지 설명해 보겠습니다. 먼저 스택과 힙에 대해서 설명하겠습니다. 스택은 컴파일하면서 메모리의 크기가 결정됩니다. 그렇기 때문에 동적으로 할당과 해제가 불가능합니다. 함수의 실행과 종료에 따라 할당이 되고 해제가 됩니다. 명확하게 정해져 있는 메모리 공간만큼 사용합니다. 힙은 프로그래머가 할당하고 해제를 하기 때문에 런타임..
프로그램을 실행하게 되면 메모리의 공간이 운영체제에 의해 미리 마련이 됩니다. 그래서 이 공간 내에 변수나 데이터 값, 또는 문자열이 선언됩니다. 메모리의 구성은 네 개의 영역으로 구분되고 다음과 같습니다. 구분되는 이유는 비슷한 데이터끼리 묶어서 저장을 하면 관리가 편하고 메모리의 접근 속도가 빨라지기 때문입니다. 코드 영역(Code Area) 실행할 프로그램의 코드가 입력되는 영역입니다. CPU가 이 영역에 접근해서 저장된 명령문을 하나씩 가져가서 실행을 합니다. (Visual Studio에서는 행에 F9를 누르고 실행을 하면 한 줄씩 실행하는데 이와 비슷하게 볼 수 있습니다.) 데이터 영역(Data Area) 전역변수와 static으로 선언되는 변수들이 할당됩니다. 이 영역의 변수들은 프로그램 시작..