인프런 커뮤니티 질문&답변

blood731님의 프로필 이미지
blood731

작성한 질문수

독하게 시작하는 C 프로그래밍

IO버퍼메모리 추적하기 강의 관련 질문이 있습니다.

해결된 질문

작성

·

137

0

항상 좋은 강의 감사드립니다.

IO버퍼 강의 듣다가 질문 드립니다.

 

  1. IOBUF 구조체의 구조를 확인하는 방법이 강의에는 정확히 나와 있지는 않던데 인터넷 검색 이외 다른 방법이 있을까요? 비주얼스튜디오로 정의를 따라가는 방법으로는 c언어 표준라이브러리 나 그 외 API들의 내용을 전부 확인하기 힘든 경우가 많아서 궁금합니다.

 

  1. 실제 _iobuf 구조체는 placeholder라는 포인터변수 하나만 있는데 이 주소값에 해당하는 정보가 이전에 정의되어 있는 구조체 내용과 연결되어 있는 것인가요? 하나의 포인터만 표시되어 있는 구조체가 어떻게 작동하는지 궁금합니다.

 

  1. 강의내 코드에서는 IOBUF_TEST라는 별도의 구조체를 정의하여 사용하신 것 같은데 이 구조체의 포인터로 인스턴스화 된 개별 멤버변수들이 어떻게 실제 IO버퍼의 정보를 표현하게 되는 것인지.. 이 부분이 이해가 잘 되지 않습니다. 파일구조체의 정보를 참조하는 별도의 개별정의 구조체로 그 정보만 확인한 것이라고 이해하면 되나요?

     

 

질문이 너무 두서 없어 송구합니다. 항상 감사합니다.

답변 2

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

  1. IOBUF 구조체는 과거 C 런타임 라이브러리에서 사용되었던 것입니다. 제가 그 사실을 알고 있었기 때문에 유사하게 활용한 예를 보인 것입니다. 그런데 중요한 것은 IOBUF구조체든 다른 것이든 모두 구현의 문제이며 이는 OS를 제작한 MS사의 결정입니다. 즉, 구현에 따라 모습이나 구조는 얼마든지 달라질 수 있는 것입니다. 따라서 이런 방법 외에 구체적으로 구현부 소스코드를 보고 싶다면 MS가 제공해주는 코드를 보거나 역컴파일을 통해 유추해보는 수 밖에 없습니다.
    그것이 아니라면 Linux 운영체제에 사용된 라이브러리를 찾아 소스코드를 참고해볼 수는 있겠습니다.

  2. 이 부분은 강의에서 보여드린 것처럼 구현결과가 변경되어 나타난 결과입니다. MS사가 입/출력 구조를 약간 변경하면서 달라진 부분입니다. 여기서 단지 포인터 하나만 보인다는 것이 작동과 연결되어 설명될 수는 없겠습니다. 무엇보다 구조체는 작동과 관련이 있는 것이 아니라 메모리의 구조를 보이는 것이기 때문입니다.

  3. 네, 맞습니다. 제가 입/출력에 따른 메모리 변화를 보고 추론해서 선언한 것이 IOBUF_TEST 구조체 입니다. 그리고 '포인터로 인스턴스화 된 개별 멤버'라는 말은 표현에 오류가 있어보입니다. 굳이 따지자면 포인터로 선언된 멤버라고 보는 것이 타당하겠습니다. 그리고 다시 말씀드리지만 제가 정보 확인을 위해 추측해서 만든 것입니다. 참고하시기 바랍니다. 😄

blood731님의 프로필 이미지
blood731
질문자

우문현답에 감사합니다.


0

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

blood731님께서 질문하신 내용은 "콘솔 I/O 버퍼 메모리 추적하기" 강의와 관련하여 IOBUF 구조체의 구조 확인 방법, 실제 _iobuf 구조체의 동작 방식, 그리고 IOBUF_TEST 별도의 구조체로 파일 구조체 정보를 참조하는 방식에 대한 이해에 대해 문의하셨습니다.

이와 유사한 질문과 답변이 있어 이를 참고하시면 좋을 것 같습니다.

위의 게시글에서는 IOBUF_TEST 구조체가 어떻게 활용되며, 포인터 변수로 해석하는 과정에 대한 설명이 포함되어 있습니다. 특히, 포인터가 메모리 주소를 저장하기 위한 변수로서 어떻게 특정 위치에 저장된 정보를 특정 자료형으로 해석하는지에 대해 설명하고 있습니다. 이 설명은 _iobuf 구조체와 IOBUF_TEST 구조체의 활용 및 이해와 연결되어 있어, 질문하신 내용에 대한 이해를 돕는 데 유용할 것입니다.

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

blood731님의 프로필 이미지
blood731

작성한 질문수

질문하기