最初は、いいえ!
例外処理には、主に RTTI サポートを主に要求することによって、いくらかのコストがかかります (これまでのところ実験的に証明されていません)。RTTI サポートは、特に多数のテンプレート インスタンス化がある場合 (たとえば、STL テンプレート クラス/コンテナ クラスを多数のさまざまな型で広範囲に使用する場合)、コードのテキスト セグメントの使用に費用がかかります。
一方、newlib が必要な実装などを削減する他の可能性と比較すると、60k のオーバーヘッドのコストはそれほど大きくありません。
例外のサポートを手放すことについて、よく考えるべきです!
面白いことに、今日同僚とこのトピックについて話し合ったところ、明らかにメモリ不足の状況によって引き起こされたエラーに直面していました。問題のファームウェア (および FreeRTOS への OS バインディング) は例外をサポートしていませんが、new()
. try/catch
これは、STL によって誘導されたアルゴリズムを使用して発生する可能性があり、失敗時にブロックを使用してこれを傍受する機会はありません(単純な の使用などstd::vector
)。
したがって、例外を使用するかどうかに関係なく、エラー状況をどのように処理するかを決定し、たとえば一般的な STL パターンの使用などで一貫した動作を提供することを確認し、.text
セクション サイズに対して支払うコストからこれを検討する必要があります。