スタック使用量計測

組み込み機器用のソフトを書いていると何かとメモリ使用量が気になる。ヒープの使用量なんからは、malloc/free(C++なら、new/delete)をオーバーライドしてやれば計測可能だが、スタックはそうは行かない。以前から、どうしたらいいものか思案しつつ、あきらめもしてたが、案外簡単に計測できることに気づいた。
気づいてみると、何で思いつかなかったのか不思議である。要は、スタックにのる局所変数のアドレスをprintfしてやればいいだけである。プログラム開始時、たとえば、main()の中で、いきなり、

int main(int argc, char** argv)
printf ("%p\n", &argc);

としておき、このアドレス値をスタックの使用量を計測したい所で、局所変数のアドレス値から引いてやれば、簡単に計測できる。問題は計測したい所で、

int local;
printf("%p\n", &local);

のようなコードを挿入しなくてはならないので、コードが汚くなるというのと、挿入したコードによって、スタックの使用量が増えてしまうこと。大雑把には計れるんですがね。うまい方法ないですかね?