- 808 名前:デフォルトの名無しさん mailto:sage [2018/09/07(金) 08:35:25.77 ID:Ge6Y8svS.net]
- >>792
(俺はそういう状況に遭遇したことがないが、)やるなら、 freeを生かしたまま残し、その直前でexit、 exitに「// free が遅いからここで強制終了」とコメントかな。 そもそもCはやたらfreeするようには出来てない。それはK&Rのfree実装をみても明らかだ。 C++や他GC言語のようにインスタンスを個別にmalloc/freeした方が プログラミング的に美しく、自由度があるのも確かだが、 古来C流なら > 個々のデータはプログラム終了まで破棄しない、て条件。 が分かっている時点で纏めてmallocし、内部的に切り出して使う、とかじゃないかな? 大きなテキストを1発mallocで確保し、内部的に改行コードで区切って使うみたいに。 初期データはインミュータブル扱い、追加/変更はインスタンス毎個別に確保、だ。 ただこれだと結局コードは増えてしまうし、個別freeすべきかのフラグを導入するか、 解放関数でインミュータブル領域かどうかを判定する必要がある。 そういうのが面倒だと最初から全部C++流にインスタンス毎個別に確保になり、 その分動作が遅くなるが、コード自体は綺麗に(統一的に)保たれる。 結局、コードを取るか、手間かけてその分高速化するか、でしかない。 気にならない程度なら、俺はC++流の個別確保の方がコードが綺麗だからいいと思うが。 (つまり今の君の実装) 気になるのなら、選択の余地無く高速化するしかないし。
|

|