În informatică buffer (din engleză buffer ), pl. h. buffer [1] [2] , buffer -uri [3] [4] este o zonă de memorie folosită pentru stocarea temporară a datelor în timpul intrării sau ieșirii. Schimbul de date (intrare și ieșire) poate avea loc atât cu dispozitive externe, cât și cu procese din interiorul computerului . Bufferele pot fi implementate în hardware sau software , dar marea majoritate a bufferelor sunt implementate în software. Tampoanele sunt utilizate atunci când există o diferență între rata la care sunt primite datele și rata la care sunt procesate sau când aceste rate sunt variabile, cum ar fi atunci când imprimarea este spool.
Acești termeni nu se exclud reciproc și funcțiile lor sunt adesea confuze, dar există o diferență în scopul lor. Un buffer este o stocare temporară în care blocuri mari de date sunt îmbinate sau împărțite în bucăți. Acest lucru este necesar pentru a interacționa cu un dispozitiv de stocare care funcționează cu blocuri mari de date sau atunci când datele sunt transferate într-o altă ordine decât cea în care sunt formate și este de dorit numai atunci când utilizarea blocurilor mici este ineficientă. Utilizarea unui buffer este benefică chiar dacă datele din buffer sunt scrise și citite din buffer o singură dată.
La rândul său, utilizarea unui cache implică faptul că datele vor fi citite din cache mai des decât scrise acolo. Scopul său este de a reduce numărul de accesări la memorie, nu de a le eficientiza.
Metoda de organizare a schimbului de date între dispozitive sau procese folosind un buffer se numește buffering . Unul dintre cele mai cunoscute exemple pentru utilizatorii de computere cu privire la această utilizare a tamponului este clipboard -ul din Microsoft Windows .
De asemenea, tampoanele sunt folosite în programare pentru a primi date de la funcții . Funcțiile API Windows care au ca rezultat o valoare șir (de exemplu, MultiByteToWideChar ) iau ca unul dintre argumente un pointer către buffer care urmează să fie scos. Iată un exemplu de fragment de cod sursă al unui program C care convertește șirul „Hello, World!” în Unicode :
// șirul sursă CHARtext[] = „Bună lume!”; // tampon pentru obținerea rezultatului tampon WCHAR[256]; // convertește șirul în Unicode MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1, buffer, sizeof(buffer)/sizeof(WCHAR));