valgrindでプログラムを調べてたら怒られて気づいたんだが、
shared_ptr<T>(new T[n])のようにshared_ptrで配列を持つと消すときにdelete pが呼ばれるので問題である。
new T[n]でつくった配列はdelete[] pで消さないといけない。
boostにはshared_arrayというものがあるらしいが、そういうのはtr1の下にないので、
こんなdeleterをつくって回避した。
template <typename T>
struct array_deleter
{
void operator()(T* p) const { delete[] p; }
};
void
f()
{
shared_ptr<int> p (new int[999], array_deleter<int>());
}














