setvbuf (stdout, NULL, _IOLBF, 0);
这一行存在于我的一个代码中,我无法弄清楚原因。如果我注释掉这一行,我的应用程序工作正常。但如果我保留它,那么我的应用程序崩溃了。另请阅读http://msdn.microsoft.com/en-us/library/86cebhfs(v=vs.100).aspx,但无法正确理解应用程序崩溃的原因。
请帮忙。 感谢
答案 0 :(得分:2)
setvbuf()
的部分MSDN说明说明:
因此,在Windows上,您将获得与_IOFBF
相同的效果,正如文中所述,它将使用您指定大小的自动分配缓冲区。
在您的代码中,您指定的大小为零。因此崩溃。
在非Win32系统上,相同的命令会激活行缓冲,因此可能没问题。也许这个代码是多平台的?