inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Windows 시스템 프로그래밍 - 기본

메모리 맵 파일

메모장 쓰레기값 ?

해결된 질문

133

taehyun0222

작성한 질문수 3

0

메모리매핑 쓰레기값.png.webp

예제로 파일이름 바꿔가며 만들어보고 있는데, 메모장의 인코딩형식도 UTF-8로 바꿨는데 왜 이렇게 문자열뒤에 쓰레기값들이 찍히는건가요 ? 해결방법이 뭔지 알 수 있을까요 ? ㅠㅠ

c system-programming vc++

답변 2

0

널널한 개발자

인코딩 형식이 아니라 쓰레기 값일 수 있습니다. 파일을 처음 생성하면 크기가 0입니다. 거기에 쓰기가 일어나면서 크기가 늘어납니다. 그러나 바이너리 모드로 파일을 열고 파일 크기를 임의로 늘린 경우 파일 쓰기는 현재 파일 포인터에서 일어납니다. 그리고 그 과정에서 파일 포인터가 위치한 곳에 정보를 덮어 씁니다. 이와 관련한 부분을 본인지 작성한 예제에서 살펴보시기 바랍니다. 😄

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. taehyun0222님.

파일을 저장할 때 문자 인코딩 문제로 인해 예기치 않은 문자들이 출력될 수 있습니다. 메모장의 인코딩을 UTF-8로 설정하셨다고 하셨지만, 코드나 파일을 처리하는 과정에서 인코딩 설정이 맞지 않을 수 있습니다.

일반적으로 이러한 문제가 발생하는 원인은 다음과 같습니다:

  1. 인코딩 불일치: 파일을 작성하거나 저장할 때 사용한 인코딩과, 이를 다시 열 때 사용하는 인코딩이 다를 수 있습니다. 컴파일 설정이나 파일 저장 시 다른 인코딩이 사용되었는지 확인해 보세요.

  2. 파일 끝에 쓰레기값: 메모리 맵핑 파일 사용 시, 남은 메모리 공간에 쓰레기 값이 포함될 수 있습니다. 실제로 필요한 데이터만큼 정확하게 파일을 읽고 쓸 수 있도록 코드에서 해당 부분을 처리해야 합니다.

관련 해결책으로는 다음과 같은 방법을 추천드립니다:

  • 파일을 열기 전에 std::wstringstd::string 같은 적절한 문자열 클래스를 사용해서 파일을 읽고 직접 인코딩을 확인해 보세요.

  • C 혹은 C++ 코드를 사용하는 경우, 파일을 열 때 명시적으로 std::ios::binary 모드를 사용하는 것이 도움이 될 수 있습니다. 이 모드는 파일을 바이너리 모드로 여는 것으로, 인코딩 자동 변환을 방지해 주는 역할을 합니다.

  • fopen_s() 등의 함수로 파일 열기 시, 모드를 “rb”(Read Binary)로 설정해 주시면 불필요한 변환을 막을 수 있습니다.

이미지를 보니 문제가 발생한 상태가 확실히 드러나 있네요. 메모리 매핑 파일이나 다른 바이너리 데이터를 다룰 때 반드시 문자 인코딩 및 파일 모드를 일관되게 맞춰 주셔야 합니다. 이 외에 더 알고 싶으신 점이 있으면 질문해 주세요.

유사한 사례를 참고하실 수 있는 링크도 첨부합니다:
- 메모리 맵 강의 예제의 결과가 이상합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

세마포어 개수에 따른 스레드 점유상태

0

61

2

메모리 맵과 비동기 입/출력 조합 #2 수업내용에 질문있습니다.

0

95

2

힙 메모리 블럭 관리 방법 질문

0

97

2

MapViewOfFile 원리 관련 질문있습니다

0

102

1

가상 메모리 시스템 영역 구분

0

96

2

스택 크기 결정 단계

0

75

2

시스템프로그래밍-응용편

0

130

2

바이트와 관련된 유튜브 영상을 못 찾겠어요ㅠㅠ

0

94

2

파일 복사에 관한 질문입니다

0

113

2

세마포어 예제에 대한 질문이 있습니다.

0

109

2

64 bit 운영체제라면 가상메모리가

0

180

2

alertable Wait 상태 질문있습니다

0

226

1

GetCurrentDirectory 관련 질문

0

169

2

세마포어 예제중 형변환에 대한 질문

0

162

2

강사님 dll 지연로딩 관련하여 질문 드립니다

0

205

3

선장님 , _beginThreadEx() 함수 원리는 어디서 정보를 얻을 수 있을까요?

0

286

2

메모리 맵 강의 예제의 결과가 이상합니다.

0

227

1

강사님 파일입출력(Callback함수)와 관련하여 질문 드립니다.

0

348

2

dll 명시적 링크 오류 (원인 및 해결 방법이 필요 합니다)

0

965

2

static 영역의 rw 가능한 곳은 어떤 데이터가 담기는지 궁금합니다.

0

223

1

TerminanteProcess 와 관련하여 질문 드립니다.

0

172

1

강사님 스레드 관련 질문 드립니다.

0

226

1

강사님 메뉴얼 중 이것도 궁금해서 여쭤봅니다.

0

210

2

강사님 프로세스의 IPC에서 굳이 MUTEX 가 필요할까 하는 생각이 듭니다.

1

372

4