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

この行はコードの 1 つに存在し、その理由がわかりません。この行をコメントアウトすると、アプリは正常に動作します。しかし、そのままにしておくと、アプリがクラッシュします。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 に答える