X:プログラムの各部分が使用しているメモリ量を知る必要があります。私のプログラムでは、C++ std ライブラリを多く使用しています。特に、各オブジェクトが使用しているメモリの量を知りたいです。
やり方:の消費をログに記録するにはsome_vector
、次のように記述します。
my::vector<double,MPLLIBS_STRING("some_vector")> some_vector;
どこ
namespace my {
template<class T, class S>
using vector = std::vector<T,LoggingAllocator<T,S>>;
}
ログイン アロケータは次のように実装されます。
template<class T, class S = MPLLIBS_STRING("unknown")> struct LoggingAllocator {
// ... boilerplate ...
pointer allocate (size_type n, std::allocator<void>::const_pointer hint = 0) {
log_allocation(boost::mpl::c_str<S>::value);
// allocate_memory (I need to handle it myself)
}
void destroy (pointer p) ; // logs destruction
void deallocate (pointer p, size_type num); // logs deallocation
};
質問:この動作を一般的な方法で取得するためのより良い方法はありますか? つまり、よりシンプルで、より良く、依存関係がなくboost::mpl
、mpllibs::metaparse
... 理想的には、私はただ書きたいだけです
my::vector<double,"some_vector"> some_vector;
そしてそれで終わります。