تکه کد زیر که به زبان سیپلاسپلاس را در نظر بگیرید:
#include <iostream>
using namespace std;
int main() {
char *s;
s = NULL;
cout << "Hello";
*s = 'H';
return 0;
}
انتظار داریم که اول Hello چاپ شود و سپس با توجه به اینکه میخواهیم قسمتی از حافظه که نامربوط به برنامهی ماست دسترسی پیدا کنیم،باید خطای Segmentation fault داده شود و برنامه خاتمه پیدا کند.اما وقتی کد را کامپایل و اجرا میکنیم میبینیم که اینطور نیست:
[11:22:12]:~/cpp$ clang++ test.cpp
[11:22:14]:~/cpp$ ./a.out
Segmentation fault (core dumped)
چرا همچین اتفاقی افتاد؟چون تا زمانی که بافر پر نشود به صورت خودکار فلاش نمیشود و اطلاعات چاپ نمیشوند.در تکه کد بالا بافر فرصت فلاش شدن به صورت خودکار را ندارد و زمانی که کد را با گذاشتن دستورات چاپ مختلف میخواهیم دیباگ کنیم،اگر حواسمان به این موضوع نباشد عملا نمیتوانیم باگ را پیدا کنیم!
حال برای اینکه سیپلاسپلاس را مجبور کنیم در زمانی که مدنظر ما هست،دادهها را به خروجی بفرستد،باید بافر را به صورت دستی فلاش کنیم تا مطمئن باشیم در زمان مورد نظر حتما دادهی مورد نیاز چاپ میشود:
cout << flush;
این مشکل تنها در سیپلاسپلاس پیش نمیآید.در هر زبانی که همچین رفتاری دارد این مشکل ممکن است ظاهر شود.