vscode memoryView extension 사용해보기

minseok·2023년 6월 3일
0
post-thumbnail

왜 메모리 학습을 하는가 하면 심심해서 golang을 공부하면서 pointer 파트를 보고 꽤 재밌다고 생각이 들었습니다. 그래서 바로 조금더 깊게 알고싶은 마음에 C언어 학습을 시작합니다.

...

학습중인 C언어 자료에는 셋업이 window + visual basic으로 알려주지만
저는 mac환경이라 vscode로 따라하는 중입니다.

managed 언어만 경험이 있어 메모리 개념이 부족해 학습하면서 기록을 남겨봅니다.

  • 메모리는 1바이트 단위로 고유한 주소를 가짐
  • 프로그램에서 2진수를 16진수로 자주 표기함, 알아두면 편함
    (10진수로 표현하기에는 표현할 단위가 많음)





정수 1개

64bit 시스템이여서 16진수 16개까지 메모리 주소 사용이 가능
32bit 시스템이면은 IDE가 8bit로만 표현할 것으로 추측!

nInput의 메모리 주소 0x000000016fdff5cc00이 할당
0x000000016fdff5c0 + 0c의 값

숫자 5입력 
Input number: 5

0c주소에 05값 입력 완료
메모리 주소 단위가 1Byte여서 0c로 표현하는게 좋을 것 같다





아스키 코드

이번엔 'A'를 입력해보겠습니다.

0x000000016fdff5cb에 'A'를 넣어봅니다.

0x000000016fdff5c0 + 0b16진수 41이 들어갑니다. 우측에는 'A'라고 표시가 됩니다.

어떻게 41이 'A' 될까?

1.16진수 ..041
2.(4x16^1) + (1x16^0)
3.10진수 65
4.아스키 코드 'A'





자릿수가 큰 정수

조금 더 큰 수를 받아보자

c8부터 a5, 82가 출력됩니다.
82a5로 10진수로 변경해봅니다.

a5, 82는 little endian 방식으로 역순으로 정렬된 것 이므로 다시 정방향으로 정렬합니다.

8 x 16^3(4096) = 32768
2 x 16^2(256) = 512
a(1) x 16^1(16) = 160
5 x 16^0(1) = 5

33445가 출력됩니다.





문자 배열

c8부터 배열의 데이터 a, b, c, d, e가 메모리의 연속적인 공간에 적재됩니다.

profile
즐겁게 개발하기

0개의 댓글