以前は、クラスのインスタンスを作成する必要があるときはいつでも、new を使用してそれをヒープに割り当てていました (stl クラス、および vec3 や mat4 などの数学クラスを除く)。
しかし、コードの一部を批判的に見ていたところ、技術的にはこれらのクラスをスタック上に作成するだけでよいことに気付きました。それらはそれほど大きくなく、現在のスコープ外で変更する必要はありません。(時折) それらを別の関数に渡す必要がある場合、ポインターを渡すのと同じくらい簡単に参照を使用できます。
以前は常にデフォルトでヒープに割り当て、特定の場合にのみスタックを使用していましたが、スタックにデフォルトで割り当てて、ヒープを使用する場合にのみヒープを使用する方がよいかどうか疑問に思っています。
- ポインターが本当に必要です (つまり、オブジェクトの有効期間が宣言のスコープよりも長く続く)
- クラスまたは配列がスタックに対して大きすぎます
- 継承にはそれが必要です (抽象基本クラス/インターフェース)
- 他の何か?
また、これは疑問を投げかけます: スタックに合理的に割り当てるには (おおまかに) 大きすぎるクラスはどれくらいですか? (少なくとも、スマートフォンとハイエンド デスクトップに取り組んでいると仮定します) スタック サイズの制約について不必要に心配しているだけですか? (おそらく、大規模な配列について話しているのでない限り、またクラスが 1 キロバイトに近くならない限り)