Buffers cout e cin C ++ e buffers em geral

Alguém pode explicar o conceito de buffers um pouco mais explicitamente? Entendo que os buffers são estruturas de dados em que os caracteres são armazenados e o local em que os dados devem ser lidos. Qual é a idéia de liberar buffers?

Quando um buffer é liberado, isso se refere ao ato de escrever os caracteres armazenados nele?

Do texto

To avoid the overhead of writing in response to each output request, the library uses the 
buffer to accumulate the characters to be written, and flushes the buffer, by writing its
contents to the output device, only when necessary. By doing so, it can combine several 
output operations into a single write.

Quando se refere a 'descarga', isso quase soa como se o buffer estivesse sendo gravado, mas também apagado ao mesmo tempo. Apenas especulaçã

ntão, para ser gravado na tela, é necessária a liberação do buffe

When our program writes its prompt to cout, that output goes into the buffer associated
with the standard output stream. Next, we attempt to read from cin. This read flushes
the cout buffer, so we are assured that our user will see the prompt.

Aqui, parece que usando 'endl' no final indica ao sistema que precisa escrever imediatamente (o que implica que não seria?) O que é endl não é usado?

Writing the value of std::endl ends the line of 
output, and then flushes the buffer, which forces the system to write to the output 
stream immediately.

questionAnswers(4)

yourAnswerToTheQuestion