해결된 질문
작성
·
134
0
int변수를 while문 안쪽에 선언하는 경우, while문이 반복될 때마다 int변수의 생명주기는 끝나고 다시 시작되어 매번 int변수를 새로 선언하게 될 텐데 이 경우에, int변수를 while문 바깥에 한번만 선언하는 경우와 차이가 있나요?
객체를 만들 때는 차이가 있다는 것을 알고 있는데 그냥 단순히 변수를 선언하는 과정에 연산이 있는지 확실하지 않아 여쭤봅니다.
어셈블리어를 까보면 이 둘의 차이가 없는것같긴 한데 선언 시 '이 변수는 이 메모리 위치다'라고 지정하는 과정이 있다면, 그게 반복될 지도 모른다는 생각이 들어서요.
답변 1
2
'이 변수는 이 메모리 위치다'는 것은 컴파일 하는 순간에 이미 정해지고
EBP를 기준으로 하는 상대 주소로 결정됩니다. (물론 스택 위치)
따라서 객체가 아닌 일반 정수라면
while 안에 하나 밖에 하나 아무 차이가 없습니다!