0
다음 gdb 출력과 매우 혼동 스럽습니다. 텍스트 파일을 처리하는 프로그램을 디버깅하고 있습니다.메모리 주소에 몇 바이트가 저장됩니까?
는 "을": 파일의 첫 번째 단어는 다음과 같이 "(가)"및 GDB 출력이 보이는 것입니다
(gdb) p *(char*)0x7fffffff9d30
$12 = 84 'T'
(gdb) p *(char*)0x7fffffff9d34
$13 = 104 'h'
(gdb) p *(char*)0x7fffffff9d38
$14 = 101 'e'
문자 그래서 난 'T'의 주소를 증가하는 경우로, 1 바이트 8 비트 나는 거기에서 'h'를 발견해야한다. 그러나 'h'의 주소는 이고 4 비트는뿐입니다. 내가 여기서 무엇을 놓치고 있니?
Wchar_t (와이드 문자)인지 알지 못했습니다.
비트가 아닌 4 * 옥텟/바이트 *입니다. – user2864740
그래서 저는 아직도 약간 혼란 스럽습니다. 첫 번째로 문자가 4 바이트로 저장된다는 것을 나타냅니다 (사실이 문자는 문자가 아니라 wchar_t, 즉 와이드 문자입니다). 나는 그것을 반영하기 위해 글을 편집 할 것이다. 그러나 나는 또한 질문이있다. 즉, 각 메모리 주소에 전체 바이트의 메모리가 저장되어 있습니까? 즉 0x7fffffff9d30은 전체 바이트를 참조하고 0x7fffffff9d31은 완전히 다른 바이트를 참조합니까? – letowianka
메모리 주소에는 주어진 위치에 * what * object (또는 얼마나 많은 데이터)가 저장되어 있지 않습니다. 컴파일러는 (예를 들어,'wchar_t' 타입으로부터) 그것을 컴파일 할 때 적절한 오프셋을 생성합니다. 마찬가지로, 상기 어드레스에서의 데이터의 사용은 방출 된 타겟 명령으로 컴파일되었다. – user2864740