2012-05-31 2 views
3

다른 사람들의 코드를 읽고 많은 사람들이 BUFFER_SIZE 같은 매크로를 사용하는 것을 보았습니다. 문제는 많은 프로그램이이 버퍼 문제없이 작성 될 수 있다는 것입니다. 언제 버퍼가 필요합니까? 버퍼가 필요한 이유는 무엇입니까? 그리고 그것을 올바르게 사용하는 방법?언제 C에서 버퍼가 필요합니까?

+0

이 질문이 실제 질문입니까? 그것은 일반적으로 버퍼에 관한 것이거나, 매직 넘버 대신에 매크로를 사용하거나, 버퍼없이 프로그램을 작성하는 방법입니까? 내 downvote를 제거하려면 이것을 분명히하십시오. –

답변

4

:

버퍼는 한 곳에서 다른 곳으로 이동하는 동안 데이터를 일시적으로 보유하기 위해 사용되는 물리 메모리의 저장 영역이다. 동기식 데이터 소스에 비동기 데이터 소스를 변형

  • : 그와

내가 몇 가지 구체적인 버퍼의 용도가 느끼는 말했다되고 이 큰 하나, 그리고 많은입니다 API는이 사고 방식으로 구축됩니다. 예를 들어, 본질적으로 오류가 발생하기 쉬운 데이터 소스를 읽고 있다고 가정 해보십시오. 비동기 적으로 특정 시간에 실패 할 수있는 스트림이 있지만 데이터를 다시 읽도록 요청할 수 있습니다. 이 데이터 처리는 매우 낮은 수준의 세부 사항이므로 높은 수준의 프로그래머가 걱정할 필요가 없습니다. 해결책은 스트림을 관리하고 버퍼가 안전하게 읽혀지면 버퍼에 데이터를 저장하는 로우 레벨 핸들러를 작성하는 것입니다. 예를 들어 파일 시스템, 네트워크 프로토콜 등에서 버퍼의 사용을 볼 수 있습니다 ...

  • 많은 양의 데이터 전달 : 여러 사람간에 데이터를 공유하려는 경우 데이터를 저장하는 임시 장소가 필요합니다.

  • 사물 복사/파괴적 조작 수행 : 포인터 하나를 비우고 어떤 이유로 든 메모리에서 무엇인가 옮길 필요가있는 경우 임시 보관 장소에 데이터를 넣을 수 있습니다. 한 가지 일반적인 경우는 문자열을 파괴적으로 조작하는 것과 같습니다. 원래 문자열을 조작 할 수 없으며 사본을 만들어야하기 때문에 다른 사람들이 포인터를 잡고 있으면 포인터가 손상되지 않습니다. .

  • 0

    버퍼는 단지 데이터 덩어리입니다. 얼마나 필요한지 그리고 필요할 때마다 작업에 따라 다릅니다. 버퍼와 관련된 가장 일반적인 작업은 파일 I/O 및 배열입니다.

    0

    간혹 네트워크 지터를 흡수하는 데 사용됩니다. Youtube에서 동영상을 부드럽게 볼 수있는 이유는 브라우저가 먼저 일부 데이터를 버퍼에 다운로드 한 다음 재생하기 때문입니다. 위키

    관련 문제