Неувязочка. Вы не можете вызывать эту функцию после каждого оператора в программе. Есть (большой) риск просто пропустить момент с максимальным значением SP. А проверка сигнатуры - пассивный метод, не требует лишних вызовов и гарантированно покажет заезд стека "не туда". А для экспериментов можно, как указали выше, заполнить ОЗУ паттерном и отслеживать реальную глубину стека.