Borland C++ Builder 2009 の使用
RAD Studio のヘルプ (F1) ごとに vswprintf を使用します。
int vswprintf(wchar_t *buffer, const wchar_t *format, va_list arglist);
これまで、私は常に大きなバッファを提供してきましたwchar_t OutputStr[1000]
が、問題はありませんでした。テストとして、改善アクションを実行したいので、小さなバッファーを試してみたwchar_t OutputStr[12]
ところ、プログラムが完全にクラッシュすることに気付きました。さえtry{}catch(...){}
、それをキャッチしません。Codeguard は amemcpy()
が失敗したと報告していますが、これは内部実装のようです。EOF
代わりに as 戻り値を期待していました。
オンラインで検索するvswprintf
と、c++ バリアントは入力としてバッファ サイズを使用することがわかりますが、コンパイラにそのバリアントを使用するよう説得できないようです。BCB2009 を使用してそれを強制する方法はありますか?
演習の要点は、おそらく 1 つまたは 2 つの異常な状況でバッファーが小さすぎる場合のフォールバック シナリオを実装して、関数により多くのメモリを割り当てて再試行できるようにすることでした。しかし、このメカニズムはまったく機能していないようです。
必要なバイト/文字の正確な量をテストする最善の方法がわからない?