En informàtica, una memòria intermèdia, també comunament coneguda pel terme anglès buffer, és un espai de memòria RAM o en disc utilitzada per emmagatzemar dades de forma temporal, especialment entre dos processos o maquinaris no treballant al mateix ritme.[1]
Així, les dades enviades a un perifèric (extern) són més sovint emmagatzemades en memòries intermèdies en espera de la seva tramesa efectiva per evitar els inconvenients causats a l'ordinador per la diferència de velocitat entre el microprocessador intern i els diferents perifèrics sovint lents. Igualment, les dades rebudes de l'exterior són més sovint emmagatzemades en buffers en espera del seu tractament per l'ordinador (per raons d'eficàcia, i també per evitar que una recepció de dades molt juntes faci que algunes, no tractades, es perdin).
Dispositius tals com els ports sèries, són més sovint equipats amb una cua de memòria intermèdia: dades enviades o rebudes per primera vegada es processen en primer lloc. Un programa massa ràpid pot omplir el buffer; es bloca, llavors, generalment, el procés emissor. Una recepció massa ràpida també pot bloquejar el buffer, amb el risc de pèrdua de dades; també s'utilitza sovint un dispositiu de control de flux suggerint a l'emissor aturar la seva emissió quan el buffer està perillosament a prop del límit, i recomençar quan el nivell ha tornat a ser acceptable.
En certs llenguatges de programació com C, s'utilitzen habitualment buffers per regular l'entrada i sortida; per exemple, llegir o escriure en un fitxer. En concret, el buffer és una cadena de caràcters amb un índex o un punter designant la posició de lectura corrent. En el cas d'una escriptura, el «buffer» es copia totalment o parcialment en la sortida, aleshores s'actualitza i es repeteix el procés diverses vegades; en el cas d'una lectura, en cada pas, part de l'entrada és copiada en el buffer per ser utilitzada. Aquest sistema permet limitar les crides al sistema E/S, que són molt més lentes que altres tipus d'instruccions.