私が知る限り、カスタムメモリマネージャはいくつかの中規模および大規模プロジェクトで使用されています。このrecent answerのsecurity.seは、パフォーマンス上の理由からOpenSSLのカスタムメモリアロケータが含まれており、最終的にHeartbleedの悪用を悪化させたという事実について説明しています。このold threadはメモリアロケータを扱います。特に、malloc
が遅いためにカスタムメモリアロケータを書いているのに対して、汎用の最先端アロケータは簡単にビートを奪うという学術論文の回答リンクの1つですすべてのプロジェクトでホイールを再開発している開発者よりも問題が少なくなっています。なぜ私たちは遅い `malloc`を持っていますか?
専門的にプログラムを作成していない人として、私はこの状態でどのようにして終わったのか、そこにこだわっているのは不思議です。スレッドの安全性などの微妙な問題がなければならないと思います。状況を間違って提示している場合は申し訳ありません。
malloc
は、これらの「汎用の最先端のアロケータ」のパフォーマンスに合わせて開発され、最適化されないのはなぜですか? OSや標準ライブラリの作成者にとっては、それが非常に重要な機能になるはずです。過去のLinuxカーネルでのスケジューラーの実装について多くの話を聞いたことがあります。たとえば、メモリアロケータの関心は多かれ少なかれ同じになると思います。どのように標準malloc
は非常に多くの人々がカスタムアロケータを展開する必要があると感じて悪いですか?システムのプログラマがLinuxやWindowsにデフォルトまたはリンク時のオプションとして組み込まれていないのはなぜですか?
最初のリンクは完全に無関係です。 –
短い答え...カスタムアロケータと異なる言語で:1つのサイズがすべてに適合しません。すべての面において、人々は間違いを犯します(カスタムアロケータがより優れている、または正しいと考えることを含む)。コンピュータの普及とインターネットアクセスの両方が急増しているため、間違いはより多くの人とデータに影響を与えます。 –
@AlexeyFrunze間違ったURLをコピー&ペーストしました。今修正されました。 –