質問

グローバルオペレーターをオーバーロードして、パフォーマンスに敏感なアプリケーションの削除を試みています。 http://www.informit.comに記載されている懸念事項を読みました。 /articles/article.aspx?p=30642&seqNum=3 およびIntel TBBのアロケーターを使用するための推奨事項 http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

新規にオーバーロードして初めて削除するので、いくつか質問があります。

" new"を含むすべてのファイルに、オーバーロードされた新しい関数を含む新しいヘッダーAllocator.h(またはPre.h)を含める必要があります。電話?これは退屈です。

または" gcc -include Allocator.h ..."を使用する必要がありますAllocator.h(前)を各翻訳単位に含めますか?コードプラットフォームを可能な限り独立させたい。すべてのコンパイラは" gcc -include"に類似したものをサポートしていますか?

役に立ちましたか?

解決

グローバルな operator new および operator delete をオーバーロードする場合は、実装するだけです。すでに言語の一部として定義されているため、どこでも明示的に定義する必要はありません。

編集:異なるパラメーターを取る演算子newを定義する場合は、どこにでも#includeする必要があります。ただし、それはあなた次第です。それは主にスタイルの問題です。

そして、グローバル演算子newおよびdeleteのすべてのバリアントを実装することを忘れないでください: new new [] delete 、< code> delete [] 、および std :: nothrow バリアント。

他のヒント

Visual Studioを使用し、プリコンパイル済みヘッダーを使用している場合は、そこにインクルードをスローできます。 gccにはヘッダーのプリコンパイル形式もあると思うので、コンパイル時間も改善されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top