작성
·
167
0
불리언과 부동소수점에서 디버그시 조사식과 메모리를 이용해서 메모리 안에
float 값이 어떻게 들어가 있는지 확인하는 부분이 있습니다.
메모리에 00 00 58 c0 라 되어 있다면
현재 16진수로 표현되어 있으니까 00이 1byte인 것은 이해했습니다
여기서 제가 00 00 58 c0 뒤에 붙은 00 들의 숫자를 세어봤더니
저의 경우는 36개 정도가 뒤에 있고 Rookiss님의 경우는 뒤에 약 60개 정도의 00 0f 00 ...이런식으로 붙어있었습니다
첫째, 이 개수의 차이가 왜 나는 것인가요?
둘째, 강의에 쓰인 변수에 몇 바이트가 할당되는 건가요? float니까 4byte만 할당되는 것 아닌가요?
왜 해당 변수의 정확한 주소를 봤음에도 불구하고 뒤에 더 00 00 00 들이 붙어 있는지 궁금합니다.
셋째, 저의 경우 00 00 58 c0 뒤에 0f ff ff ff 00 등 다른 값들이 들어가 있던데 이 값들의 의미는 무엇인가요?
답변 2
1
float는 4바이트니까 00 00 58 c0까지가 float 변수에 해당하는 메모리이고,
나머지는 다른 용도로 사용중이거나,
사용되지 않고 있는 메모리를 보고 있는 것입니다.
지금은 attackSpeed를 전역으로 만들어놨으니
Data 영역을 구경하고 있는 셈이 되겠네요.
실행환경에 따라 결과물이 달라질 수 있기 때문에
나머지 0의 개수라던가 이런 것은 전혀 신경쓸 필요가 없고
우리가 할당해서 사용하는 4바이트 float만 분석하면 됩니다.
나머지는 초기화 되지 않은 쓰레기값이 들어갔거나,
프로그램 구동할 때 필요한 정보 등이 있을 수 있습니다.
data stack heap 영역은 계속 나올 주제이니
메모리 분석은 지금부터 다 하실 필요는 없습니다.
0