原始的かつ強力なデバッグ方法。最近動的言語ばっかり触ってたので、メモリリークが怖くなった。そこで、newしたときにカウンタをインクリメント、deleteでデクリメントするようにしてその結果を標準出力に書き出してしまおう。
main.cpp
05 | static size_t newCount = 0; |
07 | void *operator new ( size_t size) |
10 | std::cout << "(" << newCount << ") " << "new " << size << "bytes" << std::endl; |
15 | void operator delete ( void *p) |
18 | std::cout << "(" << newCount << ") " << "delete " << p << std::endl; |
26 | friend std::ostream &operator<<(std::ostream &os, const Hoge &h) |
28 | return os << h.a << " " << h.b << " " << h.c; |
31 | Hoge():a(), b(100),c( 'a' ){} |
34 | int main( int argc, char *argv[]) |
36 | Hoge *ar = new Hoge [10]; |
38 | for ( int i=0; i<10; ++i) |
40 | std::cout << ar[i] << std::endl; |
出力
int2個、char1個のインスタンス10個でなぜ120バイト確保されるかわからなければ、パディングで調べてみるといいと思います。
参考URL
0 件のコメント:
コメントを投稿