0
setvbuf (stdout, NULL, _IOLBF, 0);

这条线出现在我的一个代码中,我无法弄清楚原因。如果我注释掉这一行,我的应用程序就可以正常工作。但是如果我保留它,那么我的应用程序就会崩溃。另请阅读http://msdn.microsoft.com/en-us/library/86cebhfs(v=vs.100).aspx,但无法正确理解应用程序崩溃的原因。

请帮忙。谢谢

4

1 回答 1

2

MSDN 描述的一部分setvbuf()说:

在此处输入图像描述

因此,在 Windows 上,您将获得与 相同的效果_IOFBF,正如它在文本中所说,它将使用您指定大小的自动分配的缓冲区。

在您的代码中,您指定的大小为零。因此崩溃。

在非 Win32 系统上,相同的命令将激活行缓冲,因此可能没问题。也许这段代码是多平台的?

于 2013-04-12T13:30:04.527 回答