スタックか、ヒープか

デバッグをする上で、あるオブジェクトがスタック上にあるかヒープ上にあるか判別できたら便利な場面が出てきた。
確か、どこかのMLでスタックかヒープかを判別する方法が議論されていた気がするが・・・結局見つからなかった。

「オブジェクトのアドレスがグローバル変数とローカル変数の間ならスタック上と見なす」という案を思いついたが、スタック領域が分割されている可能性を考えて却下。
結局、operator new を定義し、その中でヒープ上のメモリのアドレスを記録することにした。
「new 以外で生成された領域に対しては無効」という制限があるが、未定義(だと思う)動作に依存するよりはマシだろう。