인프런 커뮤니티 질문&답변

팡휘님의 프로필 이미지
팡휘

작성한 질문수

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

변수 선언과 초기화

섹션2 변수초기화 질문드립니다 (7분경)

해결된 질문

작성

·

399

2

변수를 초기화할 때, int a; 라고 하면 a가 메모리상 어딘가에 할당이 되어야하고, 여기에 어떤 값이 들어가있을지 모른다고 하셨는데... 그러면 모든 메모리는 꽉차있는 상태에서(?) 작업을 할 때 덮어 씌워지는 형태로 할당이 진행되나요 ??

메모리에 올라가있는 값을 왜 안빼는지도 궁금합니다. 값을 삭제해주지 않으면 더 많은 메모리를 사용해야할 때 빈공간이 어딘지 몰라서 어렵지 않을까요 ??

답변 4

3

안녕하세요. 팡휘님, 공식 서포터즈 코즈위버입니다.

메모리를 해제할 때 값을 비우지 않는 이유는 값을 비우는 행위도 연산이기 때문입니다.

값을 비운다는 행위는 결국 메모리에 있는 데이터를 널문자로 덮의씌운다 의미이므로 CPU 리소스를 사용합니다. 그래서 이런 작업을 생략합니다.

tonster96님 말씀처럼, 메모리를 사용하기 전에는 반드시 초기화를 진행해야 하는데요, 클래스의 멤버변수인 경우 이 초기화 과정을 자동으로 처리해주기도 합니다 :)

감사합니다.

1

운영체제는 실행되는 모든 프로그램을 관리하며 메모리 사용을 관리하고 프로그램들은 필요한 메모리 공간을 운영체제에서 할당받아서 사용합니다. 위에 선언은 정수형 자료를 담을 수 있는 공간에 접근할 권한만 받은 상태이고 대부분의 경우 다른 프로그램에서 이미 사용되어서 알 수 없는 어떤 값(쓰레기값)이 남아있는 상태입니다. 그렇기에 요즘은 반드시 초기화를 해야만 사용할 수 있게 되어 있습니다. 그리고 이전에 다른 프로그램이 사용한 메모리라도 사용권한을 받은 프로그램만 접근할 수 있고 프로그램이 종료되면 사용권한이 운영체제에 회수되어 더 이상 사용할 수 없기 때문에 굳이 메모리에 남아있는 값을 없애는 수고(?)를 하지 않고 있습니다.

1

코드가 끝나면 할당되었던메모리는 다시 사라집니다

0

팡휘님의 프로필 이미지
팡휘
질문자

답변 정말 감사합니다 !!

팡휘님의 프로필 이미지
팡휘

작성한 질문수

질문하기